DOM과 이벤트 처리
DOM (Document Object Model)
DOM은 웹 페이지의 HTML 문서를 계층적인 트리(tree) 형태의 객체로 표현하는 프로그래밍 인터페이스입니다. 이를 통해 자바스크립트를 이용하여 웹 페이지의 내용, 구조, 스타일을 동적으로 변경할 수 있습니다.
DOM의 개념
- 정의: HTML 문서를 계층적인 구조의 트리(tree) 형태의 객체로 표현한 것입니다. 브라우저는 웹 페이지를 로드할 때 해당 문서에 대한 DOM을 생성합니다.
- 노드(Node): DOM 트리를 구성하는 기본적인 단위로, 문서 안에 들어 있는 요소나 텍스트를 나타냅니다. 노드 간에는 부모, 자식, 형제 관계가 존재합니다.
- DOM 트리 시각화: 웹 브라우저의 개발자 도구를 통해 DOM 트리의 계층적 구조를 확인할 수 있습니다 (예: 오페라에서 '요소 검사'를 통해 확인).
- DOM 처리: 자바스크립트를 활용하여 DOM 트리를 순회하며 페이지 내 요소의 내용, 속성, CSS 스타일을 변경할 수 있습니다.
DOM과 BOM (Browser Object Model)의 관계
- DOM (Document Object Model): HTML 문서를 객체로 표현한 것입니다. document 객체를 통해 HTML 요소에 접근합니다.
- BOM (Browser Object Model): 웹 브라우저를 객체로 표현한 것입니다. window 객체를 최상위로 하여 location, history, screen, frames, navigator 등의 브라우저 관련 객체들을 포함합니다.
- 계층 구조: BOM의 최상위 객체인 window 객체 안에 document 객체(DOM)가 포함되는 구조입니다. 즉, 문서 객체 모델은 브라우저 객체 모델의 자식 객체입니다.
노드의 종류
DOM 트리에는 다양한 종류의 노드가 존재합니다:
- DOCUMENT_NODE: DOM 트리의 루트 노드이며, HTML 문서를 나타냅니다. 일반적으로 window.document로 접근하며, window는 생략하고 document로 자주 사용됩니다.
- ELEMENT_NODE:
<body>
,<a>
,<p>
,<h1>
등 HTML 요소를 나타내는 노드입니다. - ATTRIBUTE_NODE: class='myClass'와 같이 속성을 나타내는 노드입니다.
- TEXT_NODE: 요소 안에 들어 있는 텍스트를 나타내는 노드입니다.
HTML 요소 선택 방법
자바스크립트를 사용하여 특정 HTML 요소를 선택하는 여러 방법이 있습니다:
- ID로 HTML 요소 선택:
document.getElementById("id명")
메서드를 사용합니다. 가장 쉽고 흔히 사용되는 방법이며, 해당 ID를 가진 요소를 객체 형태로 반환합니다. 요소가 발견되지 않으면 null을 반환합니다.