본문 바로가기
IT/지식

도대체 DOM (Document Object Model) 이란 무엇인가?!

by 꾸주니어 2025. 1. 20.

DOM(Document Object Model)

 

웹 개발을 하다보면 DOM이라는 단어를 자주 보게 되고, DOM 어쩌고 하는 에러도 어렵지 않게 만날 수 있다. 도대체 DOM이란 무엇인지 알아보고 포스팅을 해본다 !

 

 

 

DOM(Document Object Model)이란 HTML이나 XML 문서를 브라우저가 동적으로 처리할 수 있게 해주는 프로그래밍 인터페이스로 문서를 트리 구조로 표현하며, JavaScript 같은 언어로 구조, 내용, 스타일을 바꿀 수 있다.


1. DOM이란?

DOM은 문서를 **노드(Node)**라는 기본 단위로 구성하고, 부모-자식 관계로 이루어진 트리 구조로 표현한다. 이를 통해 문서의 구조나 내용을 쉽게 제어할 수 있다.

DOM의 주요 역할

  1. 문서를 트리 형태로 표현한다.
  2. JavaScript 같은 언어와 연동해 동적으로 문서를 제어할 수 있다.
  3. HTML의 요소, 속성, 텍스트, 스타일 등을 접근하고 수정할 수 있다.

2. DOM의 트리 구조

HTML 문서를 DOM으로 표현하면 계층적인 구조가 만들어진다.

HTML 코드 예시

<html>
  <head>
    <title>Sample Page</title>
  </head>
  <body>
    <h1>Welcome</h1>
    <p>This is a paragraph.</p>
  </body>
</html>

DOM 트리 구조

Document
 ├── html
      ├── head
      │     └── title
      └── body
            ├── h1
            └── p

DOM 노드의 종류

  1. 문서 노드 (Document Node): 문서의 최상위 루트 노드 (예: <html>).
  2. 요소 노드 (Element Node): HTML 태그 (예: <body>, <h1>).
  3. 텍스트 노드 (Text Node): 태그 내부의 텍스트 (예: "Welcome").
  4. 속성 노드 (Attribute Node): HTML 태그의 속성 (예: id="title").

3. DOM을 JavaScript로 다루는 방법

DOM을 이용하면 JavaScript로 여러 작업을 할 수 있다.

1) 요소 선택하기

DOM 요소를 선택하려면 아래 메서드를 사용한다:

// ID로 요소 선택
const elementById = document.getElementById('example');

// CSS 선택자로 요소 선택
const elementByQuery = document.querySelector('.example');

// 태그 이름으로 요소 선택
const elementsByTag = document.getElementsByTagName('p');

2) 요소 생성하고 추가하기

새로운 요소를 만들어 DOM에 추가:

const newElement = document.createElement('div');
newElement.textContent = 'Hello, DOM!';

document.body.appendChild(newElement);

3) 요소 수정하기

선택한 요소의 내용 바꾸기:

const title = document.getElementById('title');
title.textContent = 'Updated Title';

4) 요소 삭제하기

요소를 삭제하려면 부모 노드에서 자식을 제거한다:

const elementToRemove = document.getElementById('example');
elementToRemove.parentNode.removeChild(elementToRemove);

 


4. DOM 활용 예시

HTML

<!DOCTYPE html>
<html>
<head>
  <title>DOM Example</title>
</head>
<body>
  <div id="app">
    <h1>Welcome</h1>
  </div>
  <script src="app.js"></script>
</body>
</html>

JavaScript (app.js)

// 요소 선택
const app = document.getElementById('app');

// 새 요소 생성
const paragraph = document.createElement('p');
paragraph.textContent = 'This is dynamically added text.';

// 새 요소 추가
app.appendChild(paragraph);

결과: <p>This is dynamically added text.</p><div id="app"> 안에 동적으로 추가 됨.

 

<!DOCTYPE html>
<html>
<head>
  <title>DOM Example</title>
</head>
<body>
  <div id="app">
    <h1>Welcome</h1>
    <p>This is dynamically added text.</p>
  </div>
  <script src="app.js"></script>
</body>
</html>

5. DOM의 장점

  1. 동적 콘텐츠: 사용자 행동에 따라 실시간으로 내용을 바꿀 수 있다.
  2. 상호작용: 이벤트 핸들러를 추가해 사용자와 상호작용을 구현할 수 있다.
  3. 유연성: 문서의 구조와 스타일을 프로그래밍적으로 제어할 수 있다.

6. 마무리

쉽게 말해 DOM은 HTML 문서의 요소를 생성, 수정하고 필요할 땐 가져와서 사용할 수 있는 편리한 도구이다.

DOM (Document Object Model)  직역하면  문서 객체 모델...??

이해하기 쉽게 번역을 해본다면  "동적 HTML 편집도구"  라고 하면 좋을 듯 하다 !

 

신라면 120g, 20개 동원참치 라이트 스탠다드 참치, 85g, 12개 오뚜기 진라면 컵 매운맛 65g, 12개 짜파게티 140g, 5개 육개장 사발면 86g, 12개

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."