- document object model
- html문서 요소의 집합으로 node, object에 접근할 수 있다
- dom tree이미지
let nums = document.querySelectorAll('.nums');
for(let num of nums) {
console.log(num);
}
//.nums 클래스를 가진 요소에 순차적으로 접근
let p = document.querySelector('p');
p.innerText = '<strong>안녕!</strong>';
//출력: <strong>안녕!</strong>;
p.innerHTML = '<strong>안녕!</strong>';
//출력: 안녕!(굵은글씨로 출력)
//toggle()메소드를 이용한 클래스변경 코드 todo와 done을 변경함
let lis = document.querySelectorAll('li');
for(let li of lis) {
li.classList.toggle('todo');
li.classList.toggle('done');
//todo를 가진 요소는 todo삭제 후 done클래스 추가
//done을 가진 요소도 반대로 작동하여 두 가지 요소들의
//클래스가 뒤바뀜
}
let inputTxt = document.querySelector('input');
//메소드로 접근
inputTxt.setAttribute('placeholder', '입력하세요');
//속성에 바로 접근
inputTxt.placeholder = '입력하세요2';
<ul>
<li>num1</li>
형제
<li class = "num2">num2</li>
<li>num3</li>
</ul>
<script>
//ElementSibling과 그냥 Sibling의 차이
let num2 = document.querySelector('.num2');
console.log(num2.previousElementSibling); //num1 li반환
console.log(num2.previousSibling); //'형제'텍스트 반환
</script>
//append와 appendChild의 차이점
let parent = document.querySelector('.parent');
let child document.createElement('li');
child.innerText = '자식';
parent.append(child);
parent.append('자식2'); //가능
parent.appendChild(child);
parent.appendChild('자식3'); //불가능
//remove와 removeChild의 차이점(삭제의 기준)
child.remove() //child삭제
parent.removeChild(child) //parent의 자식요소인 child삭제
//버튼 클릭시 form을 제출하면 실행되는 이벤트 작성
let form = document.querySelector('form');
form.addEventListener('submit', function(e){
alert('form을 제출하였습니다');
})
<input type = "text">
<script>
//input text창을 클릭할 경우 실행되는 이벤트 작성
function focusOn(e) {
let text = document.querySelector('input');
text.setAttribute('backgroundColor', 'pink');
}
</script>