1. DOM

강재영's avatar
Aug 29, 2024
1. DOM
 
💡
브라우저 객체 모델(BOM)의 최상위 객체는 window라는 객체입니다. DOM은 이 window 객체의 하위 객체이다.
notion image
 
 

1.DOM의 주요 특징 및 개념

  1. 트리 구조: DOM은 트리 구조로 표현되며, 각 노드는 웹 페이지의 다양한 부분 (예: 요소, 속성, 텍스트 등)을 나타낸다.
  1. 라이브 (Live) 특성: DOM은 '라이브'라는 특성이 있다. 즉, DOM에 대한 변경은 즉시 웹 페이지에 반영된다.
  1. 조작 가능: 자바스크립트를 사용하여 DOM 요소를 선택, 수정, 추가 또는 제거할 수 있다.
 
// 요소 선택하기 let heading = document.getElementById('myHeading'); // 텍스트 변경하기 heading.textContent = 'New Heading Text'; // 클릭 이벤트 추가하기 heading.addEventListener('click', function() { alert('Heading clicked!'); });
window는 생략가능하다.
 

2.DOM tree

notion image
 

DOM Query (요소 접근방법)

1) 하나의 요소 노드 선택

document.getElementById(id)
  • id 어트리뷰트 값으로 요소 노드를 하나 선택한다. 여러개가 선택되면 첫번째 요소를 반환한다.
  • Return: HTMLElement를 상속받은 객체
document.querySelector(cssSelector)
  • CSS 셀렉터를 사용해서 요소 노드 한 개를 선택하고, 여러개 선택한 경우 역시 첫번째 요소만 반환한다.
  • Return: HTMLElement를 상속받은 객체

2) 여러 개의 요소 노드 선택

document.getElementsByClassName(class)
  • class 어트리뷰트 값으로 요소 노드를 모두 선택하고 공백 구분으로 여러개의 클래스를 지정할 수 있다.
  • Return : HTMLCollection(live)
  • 리턴 값이 HTMLCollection인 것은 복수 개가 반환될 때 리스트를 담아 반환하기 위한 객체인데, 배열과 비슷하지만 배열은 아닌 유사 배열 형태이다. 중요한 것은 HTMLCollection은 실시간으로 Node의 상태 변경을 반영한다.
document.getElementsByTagName(tagName)
  • 태그명으로 요소 노드를 모두 선택한다.
  • Return : HTMLCollection (live)
document..querySelectorAll(selector)
  • 지정된 CSS 선택자를 사용해서 요소 노드 모두를 선택한다.
  • Return: NodeList(non-live)

3) DOM traversing (탐색)

parentNode
  • 부모 노드를 탐색한다.
  • Return: HTMLElement를 상속받은 객체
firstChildlastChild
  • 자식 노드를 탐색한다.
  • Return: HTMLElement를 상속받은 객체
hasChildNodes()
  • 자식 노드 확인 후 유무에 따라 Boolean값 반환한다.
  • Return: Boolean
childNodes
  • 자식 노드의 컬렉션 반환. 텍스트 요소를 포함한다.
  • Return: NodeList (non-live)
children
  • 자식 노드의 컬렉션을 반환하는데 Element요소만 반환한다.
  • Return: HTMLCollection (live)
previousSiblingnextSibling
  • 형제 노드를 탐색하며, 텍스트 요소를 포함한다.
  • Return: HTMLElement를 상속받은 객체
previousElementSiblingnextElementSibling
  • 형제 노드를 탐색하며, Element요소만 탐색한다.
  • Return: HTMLElement를 상속받은 객체
Share article

강재영 블로그