DOM(Document Object Model)은 웹 개발에서 HTML이나 XML 문서의 구조를 표현하고 조작하기 위한 시스템입니다. 쉽게 말해서, DOM은 웹 페이지의 내용을 프로그래밍 언어(주로 JavaScript)를 통해 동적으로 변경할 수 있게 해주는 구조입니다. 이 글에서는 초보자도 쉽게 이해할 수 있도록 DOM의 기본 개념과 사용법을 설명하겠습니다.
노드(Node):
요소(Element):
<div>
, <p>
, <span>
등.텍스트(Text):
<p>Hello, World!</p>
에서 "Hello, World!" 부분.속성(Attribute):
<img src="image.jpg" alt="이미지">
에서 src
와 alt
.HTML 문서가 DOM으로 변환되면, 문서의 각 부분이 트리 형태로 연결됩니다. 이 구조는 부모-자식 관계로 이루어져 있습니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>DOM 예제</title>
</head>
<body>
<div id="container">
<p>안녕하세요, <span>DOM!</span></p>
</div>
</body>
</html>
위 HTML 문서의 DOM 트리 구조는 다음과 같습니다:
html
├── head
│ ├── meta
│ └── title
└── body
└── div#container
└── p
├── 텍스트("안녕하세요, ")
└── span
└── 텍스트("DOM!")
JavaScript를 사용하여 DOM을 조작할 수 있습니다. 이를 통해 웹 페이지의 내용을 동적으로 변경하거나 새로운 요소를 추가할 수 있습니다.
먼저, HTML 문서의 일부를 변경해보겠습니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>DOM 조작 예제</title>
</head>
<body>
<div id="myDiv">원래 텍스트</div>
<button id="changeTextBtn">텍스트 변경</button>
<script src="script.js"></script>
</body>
</html>
위의 HTML 파일에서 JavaScript를 사용하여 div
요소의 텍스트를 변경해보겠습니다.
// script.js
// DOM 요소 선택
const myDiv = document.getElementById('myDiv');
const changeTextBtn = document.getElementById('changeTextBtn');
// 버튼 클릭 시 텍스트 변경
changeTextBtn.addEventListener('click', () => {
myDiv.textContent = '변경된 텍스트';
});
이 예제에서:
document.getElementById('myDiv')
: id
가 myDiv
인 요소를 선택합니다.myDiv.textContent = '변경된 텍스트'
: 선택한 요소의 텍스트를 변경합니다.addEventListener('click', ...)
: 버튼을 클릭하면 지정된 함수가 실행됩니다.DOM을 조작할 때 자주 사용하는 메서드와 속성들입니다:
document.getElementById(id): 주어진 id
를 가진 요소를 반환합니다.
const element = document.getElementById('myId');
document.getElementsByClassName(className): 주어진 class
를 가진 모든 요소를 배열 형태로 반환합니다.
const elements = document.getElementsByClassName('myClass');
document.getElementsByTagName(tagName): 주어진 태그 이름을 가진 모든 요소를 배열 형태로 반환합니다.
const elements = document.getElementsByTagName('div');
document.querySelector(selector): 주어진 CSS 선택자를 만족하는 첫 번째 요소를 반환합니다.
const element = document.querySelector('.myClass');
document.querySelectorAll(selector): 주어진 CSS 선택자를 만족하는 모든 요소를 배열 형태로 반환합니다.
const elements = document.querySelectorAll('div.myClass');
element.textContent: 요소의 텍스트 내용을 설정하거나 가져옵니다.
element.textContent = '새로운 텍스트';
element.innerHTML: 요소의 HTML 내용을 설정하거나 가져옵니다.
element.innerHTML = '<span>새로운 HTML</span>';
element.setAttribute(name, value): 요소의 속성을 설정합니다.
element.setAttribute('class', 'newClass');
element.getAttribute(name): 요소의 속성을 가져옵니다.
const value = element.getAttribute('class');
element.appendChild(child): 요소의 자식 요소로 child
를 추가합니다.
element.appendChild(newElement);
element.remove(): 요소 자신을 DOM 트리에서 제거합니다.
element.remove();
DOM은 웹 페이지의 구조와 내용을 프로그래밍적으로 접근하고 조작할 수 있게 해주는 매우 중요한 개념입니다. JavaScript를 통해 DOM을 조작하면 웹 페이지를 동적으로 변경하고, 사용자와 상호작용할 수 있는 다양한 기능을 구현할 수 있습니다. 이 글을 통해 DOM의 기본 개념과 조작 방법을 이해하는 데 도움이 되었기를 바랍니다.