[HTML/JavaScript] DOM 트리

2025. 2. 17. 23:30·Frondend

DOM 트리란?

DOM(Document Object Model) 트리는 HTML 문서를 계층적인 구조로 표현한 모델입니다. 웹 브라우저는 HTML 문서를 로드하면, 이를 트리(Tree) 구조로 변환하여 메모리에 저장합니다.

이 트리는 부모-자식 관계를 기반으로 구성되며, HTML 문서의 각 요소(태그)는 노드(Node)라는 개념으로 표현됩니다.


1. DOM 트리의 구조

DOM 트리는 HTML 문서의 구조를 반영하며, 아래와 같은 계층적 관계를 가집니다.

  • 문서 노드 (Document Node): DOM 트리의 최상위 노드로, 전체 문서를 대표함.
  • 요소 노드 (Element Node): HTML 태그들 (<html>, <head>, <body> 등) 각각을 나타냄.
  • 속성 노드 (Attribute Node): 요소 노드에 정의된 속성을 나타내며, 별도의 노드로 관리됨.
  • 텍스트 노드 (Text Node): 요소 노드 내부의 실제 콘텐츠를 포함하는 노드.

📌 DOM 트리 예시 (HTML 문서 구조)

<!DOCTYPE html>
<html>
  <head>
    <title>DOM 트리 구조</title>
  </head>
  <body>
    <h1>Hello World</h1>
    <p>이것은 문단입니다.</p>
  </body>
</html>

위 HTML을 DOM 트리 구조로 나타내면 다음과 같습니다.

Document
 ├── <html> (Element)
 │    ├── <head> (Element)
 │    │    ├── <title> (Element)
 │    │    │    ├── "DOM 트리 구조" (Text)
 │    ├── <body> (Element)
 │         ├── <h1> (Element)
 │         │    ├── "Hello World" (Text)
 │         ├── <p> (Element)
 │              ├── "이것은 문단입니다." (Text)

2. DOM 트리의 주요 구성 요소

DOM 트리는 여러 유형의 노드(Node)들로 구성됩니다.

노드 유형 설명
문서 노드 (Document) HTML 문서 전체를 나타내며, DOM 트리의 루트(Root) 역할을 함.
요소 노드 (Element) HTML 태그(<html>, <body>, <div> 등)를 나타냄.
속성 노드 (Attribute) 요소의 속성(id, class 등)을 나타내며, 요소 노드와 연결됨.
텍스트 노드 (Text) HTML 요소 내부의 텍스트 콘텐츠를 포함함.
주석 노드 (Comment) HTML 문서 내의 주석(<!-- 주석 -->)을 포함함.

3. DOM 트리에서 노드 탐색

자바스크립트를 사용하면 DOM 트리를 탐색하여 특정 노드를 선택하고 조작할 수 있습니다.

📌 DOM 탐색 주요 프로퍼티

  • parentNode: 부모 노드를 반환
  • childNodes: 자식 노드 리스트를 반환
  • firstChild: 첫 번째 자식 노드를 반환
  • lastChild: 마지막 자식 노드를 반환
  • nextSibling: 다음 형제 노드를 반환
  • previousSibling: 이전 형제 노드를 반환

📌 예제: 특정 요소의 부모 및 자식 요소 찾기

const element = document.getElementById("demo");
console.log(element.parentNode);  // 부모 요소 출력
console.log(element.childNodes);  // 모든 자식 요소 출력
console.log(element.firstChild);  // 첫 번째 자식 요소 출력

4. DOM 조작

자바스크립트를 사용하여 DOM 트리에 새로운 요소를 추가하거나 기존 요소를 변경할 수 있습니다.

📌 새로운 요소 추가

const newElement = document.createElement("p"); // 새 문단 요소 생성
newElement.textContent = "새로 추가된 문단입니다."; // 내용 추가
document.body.appendChild(newElement); // body에 추가

📌 기존 요소 삭제

const element = document.getElementById("demo");
element.parentNode.removeChild(element); // 요소 삭제

📌 정리

기능 설명
DOM 트리의 루트 document 객체
HTML 요소 찾기 getElementById(), querySelector()
노드 탐색 parentNode, childNodes, nextSibling
새로운 요소 추가 document.createElement(), appendChild()
기존 요소 삭제 removeChild()

💡 결론

DOM 트리는 HTML 문서를 계층적 구조로 표현하며, 이를 활용하면 HTML 요소를 쉽게 탐색하고 조작할 수 있습니다.

자바스크립트를 사용하여 DOM을 동적으로 변경하면 사용자와 상호작용하는 웹 페이지를 만들 수 있습니다. 🚀

반응형

'Frondend' 카테고리의 다른 글

[HTML/JavaScript] querySelector, getElementById, addEventListener  (0) 2025.02.18
[HTML] dl, dt, dd 태그  (2) 2025.02.18
[HTML] HTML5 란?  (0) 2025.02.17
[CSS] CSS 시작하기  (0) 2025.02.16
[HTML] Html 시작하기  (2) 2025.02.14
'Frondend' 카테고리의 다른 글
  • [HTML/JavaScript] querySelector, getElementById, addEventListener
  • [HTML] dl, dt, dd 태그
  • [HTML] HTML5 란?
  • [CSS] CSS 시작하기
JJuuuunn
JJuuuunn
  • JJuuuunn
    JJuuuunn
    JJuuuunn
  • 전체
    오늘
    어제
    • 분류 전체보기 (70)
      • Backend (7)
        • Java (7)
      • Frondend (48)
        • Vue.js (12)
        • JavaScript (21)
        • Css (1)
      • Infra (0)
      • Git (2)
      • CS (5)
        • DataBase (0)
        • Network (2)
        • OS (0)
        • Algorithm (0)
      • 리뷰 (5)
        • 강의 (1)
        • Books (4)
      • ETC (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    HTML
    혼공컴운
    KDT
    렌더링
    Vue.js
    이벤트
    frontend
    axios
    Watch
    Java
    API
    깊은 감시
    객체
    자바스크립트
    javascript
    혼자 공부하는 컴퓨터구조+운영체제
    VUE
    자바
    신세계i&c
    Network
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.1
JJuuuunn
[HTML/JavaScript] DOM 트리
상단으로

티스토리툴바