자바스크립트 DOM 조작 활용
웹 개발 세계에서 자바스크립트는 단순한 스크립트 언어를 넘어, 사용자 경험을 향상시키는 중요한 도구로 자리잡고 있습니다. 그 중에서도 Document Object Model(문서 객체 모델), 약칭 DOM은 웹 페이지의 구조를 이해하고 조작할 수 있는 강력한 인터페이스를 제공합니다. 이 글에서는 DOM의 개념과 조작 방법에 대해 알아보겠습니다.

DOM이란 무엇인가?
DOM은 웹 페이지의 HTML 요소를 객체 형태로 표현하는 모델입니다. 브라우저는 HTML 문서를 로드한 후, 이를 파싱하여 메모리에 객체 트리 구조로 형성합니다. 이로 인해 개발자는 자바스크립트를 사용하여 웹 페이지의 내용이나 구조를 동적으로 수정할 수 있게 되는데, 이를 가능하게 하는 것이 바로 DOM입니다.
DOM 트리 구조
DOM 트리는 여러 노드로 구성되어 있으며, 여기서 노드는 문서의 요소, 속성, 텍스트 등을 의미합니다. 즉, 트리의 최상위 노드는 Document 노드이고, 그 아래에는 Element 노드, Attribute 노드, Text 노드 등이 존재합니다. 이러한 구조는 HTML 문서가 갖는 계층적 관계를 반영하고 있습니다.
- 문서 노드(Document Node): 최상위 노드로 전체 문서를 나타냅니다.
- 요소 노드(Element Node): HTML 요소를 의미하며, 이들은 부자 관계를 형성합니다.
- 어트리뷰트 노드(Attribute Node): 특정 요소의 속성을 표현합니다.
- 텍스트 노드(Text Node): 요소 내의 텍스트 내용을 나타냅니다.
DOM 탐색하기
자바스크립트에서 DOM 요소를 탐색하기 위한 다양한 방법이 있습니다. 가장 일반적으로 사용되는 메소드는 다음과 같습니다.
단일 요소 선택
특정 ID를 가진 요소를 선택하는 메소드로는 document.getElementById(id)
등이 있습니다. 이 메소드는 해당 ID를 가진 요소를 반환하며, 여러 요소가 같은 ID를 가질 경우 첫 번째 요소만 반환됩니다.
여러 요소 선택
여러 요소를 선택할 때는 document.getElementsByClassName(className)
와 같은 메소드를 사용합니다. 이 메소드는 해당 클래스 이름을 가진 모든 요소를 반환하며, HTMLCollection 형식으로 결과를 제공합니다.

CSS 셀렉터를 통한 선택
또한 document.querySelector(cssSelector)
와 document.querySelectorAll(cssSelector)
메소드를 사용하면 CSS 셀렉터를 활용하여 강력한 선택 기능을 사용할 수 있습니다. 이 메소드는 한 개의 요소 또는 여러 요소를 쉽게 선택할 수 있게 해 줍니다.
DOM 조작하기
DOM의 가장 큰 매력 중 하나는 요소의 내용을 쉽게 변경할 수 있다는 점입니다. 이러한 조작은 텍스트, HTML 콘텐츠, 속성 변경 등 다양한 형태로 이루어질 수 있습니다.
텍스트와 HTML 콘텐츠 수정
특정 요소의 텍스트를 수정하고자 할 때는 element.textContent
또는 element.innerHTML
를 사용할 수 있습니다. 전자는 텍스트 노드로서의 내용을 변경하는 반면, 후자는 HTML 구조를 포함한 내용을 변경합니다.
속성 변경 및 조작
요소에 속성을 접근하고 변경하는 방법도 다양합니다. 예를 들어, element.setAttribute(attributeName, value)
를 사용하면 특정 요소의 속성을 설정할 수 있으며, element.className
을 이용해 CSS 클래스를 동적으로 변경할 수도 있습니다.

DOM 조작의 장점과 주의사항
DOM을 통해 웹 페이지를 조작하는 것은 동적인 사용자 경험을 가능하게 합니다. 그러나 조작 과정에서 몇 가지 주의해야 할 점이 있습니다. 특히 innerHTML
를 사용하여 직접 HTML 콘텐츠를 수정할 경우, XSS 공격에 취약해질 수 있습니다. 따라서 외부 입력값을 처리할 때는 항상 신중함이 요구됩니다.
결론적으로, DOM은 자바스크립트와 함께 웹 개발의 핵심적인 요소로 자리잡고 있습니다. 개발자들은 DOM을 통해 웹 페이지의 구조를 유연하게 조작하고, 사용자와의 상호작용을 강화할 수 있습니다. 이 기회를 통해 더 나은 웹 애플리케이션을 만들어 나갈 수 있을 것입니다.
자주 묻는 질문과 답변
DOM이란 무엇인가요?
DOM은 웹 페이지의 HTML 요소를 객체 형태로 표현한 모델입니다. 이를 통해 개발자는 자바스크립트를 사용하여 페이지를 동적으로 조작할 수 있습니다.
DOM 트리 구조는 어떻게 이루어져 있나요?
DOM 트리는 다양한 노드로 구성되어 있으며, 최상위에는 Document 노드가 위치합니다. 그 아래에는 요소 노드, 텍스트 노드 등이 포함되어 있습니다.
자바스크립트로 DOM 요소를 선택하는 방법은 무엇인가요?
자바스크립트에서는 다양한 메소드를 활용해 DOM 요소를 선택할 수 있습니다. 예를 들어, ID로 요소를 찾거나, 클래스 이름을 기반으로 여러 요소를 선택할 수 있습니다.
DOM을 통해 어떤 조작을 할 수 있나요?
DOM을 통해 요소의 텍스트 내용이나 HTML 구조를 수정하거나, CSS 클래스를 동적으로 변경할 수 있습니다. 이는 웹 페이지의 사용자 경험을 향상시키는 데 기여합니다.
DOM 조작 시 주의해야 할 점은 무엇인가요?
DOM을 조작할 때는 XSS 공격 같은 보안 위협에 주의해야 합니다. 특히 외부에서 입력된 데이터를 처리할 때는 신중하게 접근해야 합니다.