
DOM Document Object Model: HTML, XML 문서를 객체 기반의 트리 구조로 표현한 프로그래밍 인터페이스이다.
즉, 문서의 구조화된 표현을 제공하며 프로그래밍 언어가 DOM 구조에 접근할 수 있는 방법을 제공하여 그들이 문서 구조, 스타일, 내용 등을 변경할 수 있게 돕는다.
querySelector: CSS 선택자에 해당하는 가장 첫번째 DOM element 선택querySelectorAll: CSS 선택자에 해당하는 모든 DOM element 선택getElementById: 주어진 문자열과 일치하는 id 값을 가진 요소 선택getElementByClassName: 주어진 클래스 이름을 가진 모든 자식 요소를 배열과 같은 객체로 반환parentElement: 호출된 element의 부모 요소 반환nextElementSibling: 호출된 element의 바로 뒤에 있는 요소(형제) 반환previousElementSibling: 호출된 element의 바로 앞에 있는 요소(형제)를 반환getElementBy*: 문서에 변경이 있을 때마다 자동으로 갱신되어 최신 상태를 유지한다.
querySelectorAll(): 정적인 컬렉션을 반환해 자동으로 갱신이 안된다
// getElementsBy~ 는 살아있는 컬렉션을 반환한다.
<div>첫 번째 div</div>
<script>
let divs = document.getElementsByTagName('div');
alert(divs.length); // 1
</script>
<div>두 번째 div</div>
<script>
alert(divs.length); // 2
</script>
// querySelectorAll 은 정적인 컬렉션을 반환함.
<div>첫 번째 div</div>
<script>
let divs = document.querySelectorAll('div');
alert(divs.length); // 1
</script>
<div>두 번째 div</div>
// 문서에 새로운 div가 추가되었지만 여전히 1을 반환하고 새로운 div를 반영하지 못하고 있다.
<script>
alert(divs.length); // 1
</script>
매개변수로 주어진 tagName의 HTML 요소를 만들어 반환한다.
let element = document.creageElement('tagName')
classList.add: 지정한 클래스 추가let addClass = element.classList.add('className')
classList.remove: 지정한 클래스 삭제let removeClass = element.classList.remove('className')
classList.toggle: 클래스가 있다면 제거, 클래스가 없다면 추가let toggleClass = element.classList.toggle('className')
setAttribute 를 이용해 지정된 속성을 요소에 추가하고 지정된 값 제공
element.setAttribute('attribute', 'value')
appendChild()를 이용해 특정 부모 노드의 자식 노드 리스트 중 마지막 자식으로 추가
element.appendChild(aChild);