SW/JavaScript

DOM(Document Object Model) 이해하기: 웹 페이지를 자유롭게 조작하는 기술

얇은생각 2024. 9. 17. 07:30
반응형

웹 개발에서 DOM(Document Object Model)은 매우 중요한 개념입니다. DOM은 HTML이나 XML 문서의 구조를 정의하며, JavaScript와 같은 프로그래밍 언어가 이 구조와 상호작용하고, 이를 조작할 수 있도록 합니다. DOM을 이해하고 활용하면 웹 페이지의 요소들을 자유자재로 조작할 수 있게 되어, 보다 동적이고 사용자 친화적인 웹 애플리케이션을 개발할 수 있습니다.

 

DOM(Document Object Model) 이해하기: 웹 페이지를 자유롭게 조작하는 기술

 

DOM이란 무엇인가?

DOM은 HTML 및 XML 문서를 트리 구조로 표현하는 인터페이스입니다. DOM을 통해 프로그래밍 언어는 문서의 내용과 구조를 조작할 수 있습니다. 예를 들어, JavaScript를 사용하여 페이지에 새로운 요소를 추가하거나, 특정 요소의 텍스트를 변경하거나, 사용자의 마우스 클릭이나 키보드 입력에 반응하도록 할 수 있습니다.

 

DOM의 작동 원리

웹 페이지가 로드되면, 브라우저는 해당 페이지의 DOM을 생성합니다. DOM은 HTML 코드를 트리 구조로 변환하여 각 노드가 특정 HTML 요소를 나타내도록 합니다. 이 트리 구조의 루트는 document 객체이며, 각 노드는 문서의 각 요소(예: 문단, 이미지, 헤더, 링크 등)를 나타냅니다.

예를 들어, 아래와 같은 간단한 HTML 코드가 있다고 가정해 봅시다.

<html>  
  <head>    
    <title> DOM 블로그 </title>  
  </head>  
  <body>    
    <button> 블로그 읽기 </button>  
  </body> 
</html>
 
 

위 코드가 DOM으로 변환되면, 아래와 같은 트리 구조가 만들어집니다.

document
│
├── html
│   ├── head
│   │   └── title
│   └── body
│       └── button

 

이러한 트리 구조 덕분에 DOM을 쉽게 조작할 수 있습니다.

 

 

DOM의 구성 요소: 노드와 엘리먼트

DOM의 각 요소는 노드(node)와 엘리먼트(element)로 구성됩니다. 노드는 트리의 각 가지를 나타내며, 엘리먼트는 HTML 태그와 연결된 노드입니다. 각 노드에는 속성(properties)과 메서드(methods)가 있으며, 이를 통해 해당 노드를 조작할 수 있습니다.

 

 

속성(Properties)

속성은 노드 또는 요소의 특성 값을 나타냅니다. 예를 들어, 특정 HTML 요소의 텍스트 내용을 변경하고 싶다면, 해당 요소의 innerHTML 속성을 사용할 수 있습니다.

<h1 id="blog-head">DOM에 대한 블로그입니다</h1>
 
 
 

위와 같은 HTML이 있을 때, JavaScript를 사용하여 텍스트를 변경해 보겠습니다.

var heading = document.getElementById('blog-head');
heading.innerHTML = '읽고, 배우고, 피드백을 남겨주세요!';
 
 

위 코드를 통해 innerHTML 속성을 이용해 HTML을 직접 수정하지 않고도 헤딩의 텍스트를 변경할 수 있습니다.

 

 

메서드(Methods)

메서드는 노드나 요소에서 실행할 수 있는 함수와 유사한 동작을 정의합니다. 예를 들어, 버튼을 클릭할 때 경고 메시지를 표시하고 싶다면, addEventListener() 메서드를 사용할 수 있습니다.

<button id="my-button">DOM 블로그 읽기</button>

 

 

이제 JavaScript를 사용하여 버튼 클릭 시 경고 메시지를 띄워봅시다.

var button = document.getElementById('my-button');
button.addEventListener('click', function() {
  alert('DOM 블로그 읽기 버튼을 클릭했습니다!');
});
 
 

addEventListener() 메서드는 이벤트 리스너를 추가하여 특정 이벤트(예: 클릭)가 발생할 때 실행될 함수를 정의할 수 있게 해줍니다.

 

 

DOM 셀렉터: 요소 선택하기

DOM에서 특정 요소를 선택하려면 셀렉터(selector)를 사용해야 합니다. 다양한 셀렉터를 사용하여 특정 요소를 선택하고 조작할 수 있습니다.

1) 태그 이름으로 선택하기: getElementsByTagName()

이 셀렉터는 태그 이름으로 요소를 선택합니다. 예를 들어, 아래 HTML에서 모든 li 요소를 선택할 수 있습니다.

<ul id="title">  
  <li class="item">하나</li>
  <li class="item">둘</li>
  <li class="item">셋</li>
</ul>
 
 
var items = document.getElementsByTagName("li");
 
 

이 코드는 모든 li 요소를 배열 형태로 반환합니다. 각 요소의 스타일을 변경하려면 아래와 같이 할 수 있습니다.

items[0].style.color = "Red";
items[1].style.color = "Blue";
items[2].style.color = "Green";
 
 
 

2) 클래스 이름으로 선택하기: getElementsByClassName()

이 셀렉터는 특정 클래스 이름을 가진 모든 요소를 선택합니다.

<ul id="title">  
  <li class="item">하나</li>
  <li class="item">둘</li>
  <li class="item">셋</li>
</ul>
<button class="btn">블로그 읽기</button>

 

var buttons = document.getElementsByClassName("btn");
buttons[0].textContent = "블로그를 읽고 있습니다";
 
 

이 코드는 btn 클래스를 가진 버튼의 텍스트 내용을 변경합니다.

 

3) ID로 선택하기: getElementById()

이 셀렉터는 특정 ID를 가진 요소를 선택합니다. ID는 문서 내에서 유일해야 하므로, 하나의 요소만 반환합니다.

<ul id="title">  
  <li class="item">하나</li>
  <li class="item">둘</li>
  <li class="item">셋</li>
</ul>
<button id="my-button">블로그 읽기</button>

 

var title = document.getElementById("title");
title.style.color = "red";
 
 
 

이 코드는 title ID를 가진 요소의 색상을 빨간색으로 변경합니다.

 

 

4) 쿼리 셀렉터: querySelector()

쿼리 셀렉터는 태그 이름, 클래스, 또는 ID를 사용하여 요소를 선택할 수 있는 가장 유연한 방법입니다.

<h1 class="header" id="first-head">더 많은 정보를 원하시면 팔로우하세요</h1>

 

document.querySelector("h1").style.color = "red"; // 태그 이름으로 선택
document.querySelector("#first-head").style.color = "blue"; // ID로 선택
document.querySelector(".header").style.color = "green"; // 클래스로 선택
 
 
 

이 방법을 사용하면 HTML 요소를 다양한 방식으로 선택하고 조작할 수 있습니다.

 

 

결론

DOM은 웹 페이지를 조작하고, 동적인 사용자 경험을 제공하는 데 있어 필수적인 도구입니다. DOM을 이해하고, 이를 활용하여 HTML 요소를 선택하고 조작하는 방법을 익히면, 웹 개발자로서의 역량을 크게 향상시킬 수 있습니다. 이 블로그에서는 DOM의 기본 개념과 다양한 셀렉터, 속성 및 메서드를 사용하여 웹 페이지를 조작하는 방법을 설명했습니다. 이를 통해 더 나은 사용자 경험을 제공하는 동적 웹 애플리케이션을 개발할 수 있을 것입니다.

반응형