본문 바로가기
프로그래머로의 여정

DOM(Document Object Model) 메서드

by nunaaa 2025. 6. 8.

DOM(Document Object Model) 메서드 상세 설명

DOM 메서드는 웹 페이지의 구조, 내용, 스타일을 프로그래밍적으로 조작할 수 있게 해주는 JavaScript 인터페이스입니다. 아주 자세히 설명드리겠습니다.

DOM의 기본 개념

DOM(Document Object Model)은:

  • HTML/XML 문서를 계층적 트리 구조로 표현한 프로그래밍 인터페이스
  • 문서를 노드(Node)와 객체로 구성하여 표현
  • JavaScript가 웹 페이지와 상호작용할 수 있게 해줌

주요 DOM 메서드 종류

1. 요소 선택 메서드

메서드 설명 예시 반환 값
getElementById() ID로 단일 요소 선택 document.getElementById('header') 단일 요소 또는 null
getElementsByClassName() 클래스 이름으로 요소 컬렉션 선택 document.getElementsByClassName('menu') HTMLCollection (live)
getElementsByTagName() 태그 이름으로 요소 컬렉션 선택 document.getElementsByTagName('div') HTMLCollection (live)
querySelector() CSS 선택자로 첫 번째 요소 선택 document.querySelector('.btn.active') 단일 요소 또는 null
querySelectorAll() CSS 선택자로 모든 요소 선택 document.querySelectorAll('p.warning') NodeList (static)

2. 요소 생성/수정 메서드

메서드 설명 예시
createElement() 새 요소 생성 document.createElement('div')
createTextNode() 텍스트 노드 생성 document.createTextNode('안녕하세요')
appendChild() 자식 노드 추가 parent.appendChild(child)
removeChild() 자식 노드 제거 parent.removeChild(child)
replaceChild() 자식 노드 교체 parent.replaceChild(new, old)
cloneNode() 노드 복제 element.cloneNode(true)

3. 속성/내용 조작 메서드

메서드 설명 예시
setAttribute() 속성 설정 img.setAttribute('src', 'logo.png')
getAttribute() 속성 값 가져오기 link.getAttribute('href')
removeAttribute() 속성 제거 input.removeAttribute('disabled')
textContent 텍스트 내용 설정/가져오기 div.textContent = '새 내용'
innerHTML HTML 내용 설정/가져오기 container.innerHTML = '<span>추가</span>'

4. 스타일 조작 메서드

// 스타일 직접 변경
element.style.color = 'blue';
element.style.backgroundColor = '#f0f0f0';

// 클래스를 통한 스타일 변경
element.classList.add('active');
element.classList.remove('inactive');
element.classList.toggle('highlight');

5. 이벤트 처리 메서드

메서드 설명 예시
addEventListener() 이벤트 리스너 추가 btn.addEventListener('click', handler)
removeEventListener() 이벤트 리스너 제거 btn.removeEventListener('click', handler)
dispatchEvent() 이벤트 발생시키기 element.dispatchEvent(new Event('change'))

DOM 메서드 사용 예제

<!DOCTYPE html>
<html>
<head>
  <title>DOM 메서드 예제</title>
  <style>
    .highlight { background-color: yellow; }
    .hidden { display: none; }
  </style>
</head>
<body>
  <div id="container">
    <h1 id="mainTitle">DOM 데모</h1>
    <ul class="itemList">
      <li>항목 1</li>
      <li>항목 2</li>
    </ul>
    <button id="actionBtn">실행</button>
  </div>

  <script>
    // 요소 선택
    const btn = document.getElementById('actionBtn');
    const list = document.querySelector('.itemList');

    // 이벤트 리스너 추가
    btn.addEventListener('click', function() {
      // 새 요소 생성 및 추가
      const newItem = document.createElement('li');
      newItem.textContent = `항목 ${list.children.length + 1}`;
      list.appendChild(newItem);

      // 스타일 변경
      newItem.classList.add('highlight');

      // 속성 변경
      if (list.children.length > 3) {
        btn.setAttribute('disabled', 'true');
        btn.textContent = '더 이상 추가 불가';
      }
    });
  </script>
</body>
</html>

DOM 레벨 별 발전 과정

  1. DOM Level 1 (1998): 기본 문서 구조 조작
  2. DOM Level 2 (2000): 이벤트 모델, CSS 지원 추가
  3. DOM Level 3 (2004): XML 지원 확장, 키보드 이벤트
  4. DOM Living Standard: 현재 WHATWG에서 관리하는 현대 표준

현대 DOM API의 특징

  1. 메서드 체이닝 지원:
  2. document.querySelector('#container') .querySelectorAll('li') .forEach(item => item.classList.add('active'));
  3. 더 풍부한 선택 방법:
  4. // 최근 추가된 메서드 document.getElementById('mainTitle').closest('div'); document.querySelector('li').nextElementSibling;
  5. 성능 최적화:
    • DocumentFragment 사용으로 배치 삽입 최적화
    • MutationObserver로 효율적인 DOM 변경 감시

DOM 메서드는 웹 개발의 가장 기본적이면서도 강력한 도구입니다. 이러한 메서드들을 조합하면 동적이고 인터랙티브한 웹 페이지를 만들 수 있습니다.