DOM은 브라우저가 HTML 문서를 해석해 만들어낸 트리 구조로, 자바스크립트를 통해 그 구조에 접근하고 조작할 수 있도록 해주는 인터페이스!

웹 브라우저는 HTML 문서를 불러온 다음 이렇게 요소들 간의 상하관계를 한 눈에 볼 수 있도록 트리구조로 나타낸다! 태그 요소 하나하나들을 다 노드라고 부른다
DOM API를 이용하여 요소들을 조작한다!
id 속성을 사용하여 요소를 찾고 단일 요소를 반환한다!
let $color = document.getElementById("color");
console.log($color);
<div id="color">갈색</div> 출력
특정 요소의 id가 아닌, css 선택자로 요소 노드를 반환!
querySelector의 괄호 안에는 특정 요소의 태그 이름을 작성하고, class 이름을 통해 특정 요소를 찾는다면 .을, id를 통해 특정 요소를 찾는다면 #을 작성한 후 class 값 혹은 id 값을 작성!
let $animalInfo = document.querySelector('div.animal-info');
let $age = document.querySelector('div#age');
console.log($animalInfo);
console.log($age);
<div class="animal-info">
<div id="name">강아지</div>
<div id="color">갈색</div>
<div id="age">2살</div>
</div>
<div id="age">2살</div>
출력
전달받은 class의 이름을 갖고 있는 여러 요소들을 전부 찾아 반환!!!
let $infoItem = document.querySelectorAll('div.info-item');
console.log($infoItem);

노드리스트로 반환한다!
css 선택자가 아닌 class 이름만으로 여러 요소들을 찾는다!!
let $infoItem = document.getElementsByClassName('info-item');
console.log($infoItem);

HTMLCollection 안에 클래스 이름이 info-item인 세 개의 요소들이 전부 출력
태그 이름을 통해 요소들을 찾을 수 있다!
let $div = document.getElementsByTagName("div");
console.log($div);

새로운 요소 노드 생성
let $type = document.createElement('div');
$type.className = 'info-item';
$type.id = 'type';
$type.textContent = '말티즈';
console.log($type);
<div class="info-item" id="type">말티즈</div> 생성
전달받은 노드를 원하는 요소의 마지막 자식으로 추가 가능
let $button = document.createElement('button');
$button.id = 'new-button';
$button.classList.add('new-button');
$button.textContent = '버튼';
let $animalInfo = document.querySelector('div.animal-info');
$animalInfo.appendChild($button);
console.log($animalInfo);
let $button = document.createElement('button');
$button.id = 'new-button';
$button.classList.add('new-button');
$button.textContent = '버튼';
$button.addEventListener('click', () => {
window.alert('클릭');
});
let $animalInfo = document.querySelector('div.animal-info');
$animalInfo.appendChild($button);
console.log($animalInfo);
click, scroll, mouseover 등 많은 이벤트가 있다
let $animalInfo = document.querySelector('div.animal-info');
$animalInfo.innerHTML = '<div id="name">고양이</div>';
console.log($animalInfo);