프로그래밍/Javascript

자바스크립트 DOM 조작 완벽 가이드: 요소 선택과 조작 방법

shimdh 2025. 2. 13. 10:04
728x90

웹 개발에서 DOM(Document Object Model, 문서 객체 모델) 은 웹 페이지를 동적으로 변경하고 조작할 수 있도록 하는 핵심 개념입니다. 자바스크립트를 활용하면 DOM을 직접 수정하여 사용자와 상호 작용하는 동적인 웹 페이지를 만들 수 있습니다.

이번 글에서는 DOM 조작의 기본 개념부터 요소 선택, 조작 방법, 실전 예제까지 상세히 알아보겠습니다. 초보자부터 숙련된 개발자까지 모두 활용할 수 있는 실용적인 내용을 담고 있으니 끝까지 읽어보세요!


🔹 DOM이란 무엇인가?

DOM은 HTML 문서를 계층적 구조로 표현한 프로그래밍 인터페이스입니다. 이를 통해 자바스크립트가 웹 페이지의 요소를 읽고, 수정하고, 삭제할 수 있습니다.

🎯 DOM 조작을 활용하면?

  • 사용자의 입력에 따라 페이지 내용을 실시간으로 변경
  • 버튼 클릭 시 특정 요소의 색상 변경
  • 새로운 HTML 요소를 추가 또는 삭제
  • CSS 스타일을 동적으로 적용

즉, 자바스크립트 기반의 동적 웹 애플리케이션을 개발하는 데 필수적인 기술입니다.


🔹 요소 선택 방법

DOM을 조작하려면 먼저 원하는 HTML 요소를 선택해야 합니다. 자바스크립트에서는 여러 가지 방법을 제공하며, 선택 방식에 따라 반환되는 데이터 유형이 다릅니다.

1️⃣ ID로 요소 선택하기 (getElementById)

특정 ID를 가진 요소를 선택하는 가장 직관적인 방법입니다.

const header = document.getElementById('header');

특징

  • id="header"를 가진 요소 한 개만 선택
  • ID는 문서에서 유일해야

2️⃣ 클래스명으로 요소 선택 (getElementsByClassName)

특정 클래스를 가진 요소들을 배열과 유사한 HTMLCollection 형태로 반환합니다.

const items = document.getElementsByClassName('item');

특징

  • 동일한 클래스를 가진 여러 요소를 선택
  • for 또는 Array.from()을 사용해 반복 가능

3️⃣ 태그명으로 요소 선택 (getElementsByTagName)

문서 내 특정 태그를 가진 모든 요소를 선택할 수 있습니다.

const paragraphs = document.getElementsByTagName('p');

특징

  • <p> 태그를 가진 모든 요소를 선택
  • HTMLCollection을 반환하여 배열처럼 다룰 수 있음

4️⃣ CSS 선택자로 요소 선택 (querySelector)

CSS 선택자를 사용하여 가장 첫 번째로 일치하는 요소를 반환합니다.

const firstItem = document.querySelector('.item');

특징

  • document.querySelector('#header')처럼 다양한 선택자 활용 가능
  • 가장 첫 번째 요소만 반환

5️⃣ 여러 요소를 선택 (querySelectorAll)

CSS 선택자로 모든 일치하는 요소를 NodeList 형태로 반환합니다.

const allItems = document.querySelectorAll('.item');

특징

  • NodeListforEach() 메서드를 사용 가능
  • HTMLCollection보다 유연하게 활용할 수 있음

🔹 선택한 요소 조작 방법

이제 선택한 요소를 변경하는 방법을 살펴보겠습니다.

1️⃣ 요소의 내용 변경 (innerHTML, textContent)

요소 내부의 텍스트 또는 HTML을 수정할 수 있습니다.

header.innerHTML = '<span style="color:red">새로운 제목</span>';
header.textContent = '새로운 제목'; // HTML 태그 없이 텍스트만 변경

차이점

  • innerHTML: HTML 태그 포함 가능
  • textContent: HTML 태그를 그대로 출력

2️⃣ 스타일 변경 (style 속성)

DOM 요소의 CSS 스타일을 직접 변경할 수 있습니다.

header.style.color = 'blue';  // 글자 색 변경
header.style.fontSize = '24px';  // 글자 크기 변경

  • classList를 사용하는 것이 유지보수에 더 좋음 (아래 참조)

3️⃣ 속성 추가 및 변경 (setAttribute)

HTML 요소에 새로운 속성을 추가하거나 변경할 수 있습니다.

header.setAttribute('data-custom', 'special-header');

활용 예시

  • setAttribute('src', 'image.jpg') → 이미지 변경
  • setAttribute('disabled', 'true') → 버튼 비활성화

4️⃣ 클래스 추가 및 제거 (classList)

CSS 클래스를 추가하거나 제거할 수 있습니다.

firstItem.classList.add('active');  // 클래스 추가
firstItem.classList.remove('inactive');  // 클래스 제거
firstItem.classList.toggle('highlight'); // 클래스 토글 (있으면 제거, 없으면 추가)

유용한 기능

  • toggle()을 사용하면 간단하게 클래스를 추가/제거

🔹 실전 예제: 버튼 클릭으로 DOM 변경하기

DOM 조작의 개념을 이해했다면, 실전에서 어떻게 활용할 수 있는지 살펴보겠습니다.

🛠 HTML 코드

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>DOM 조작 예제</title>
<style>
  .active { color: red; font-weight: bold; }
</style>
</head>
<body>

<h1 id="header">안녕하세요!</h1>
<ul>
  <li class="item">아이템 1</li>
  <li class="item">아이템 2</li>
  <li class="item">아이템 3</li>
</ul>

<button id="changeButton">변경하기</button>

<script>
document.getElementById('changeButton').onclick = function() {
  const header = document.getElementById('header');
  header.textContent = '제목이 변경되었습니다!';
  header.style.color = 'green';

  const firstItem = document.querySelector('.item');
  firstItem.classList.add('active');

  const secondItem = document.querySelectorAll('.item')[1];
  if (secondItem) secondItem.remove();
};
</script>

</body>
</html>

📝 실행 결과

  1. 버튼을 클릭하면:
    • h1 요소의 텍스트가 변경되고, 색상이 초록색으로 변경
    • 첫 번째 리스트 아이템이 강조 표시
    • 두 번째 아이템이 삭제됨

이처럼 자바스크립트로 DOM을 조작하면, 사용자 입력에 반응하는 동적인 웹 페이지를 만들 수 있습니다.


🔹 결론: DOM 조작의 중요성

DOM 조작은 모든 프론트엔드 개발자가 반드시 익혀야 할 핵심 개념입니다.
웹 페이지를 더욱 동적이고 사용자 친화적으로 개선할 수 있는 강력한 도구이므로, 위 내용을 반복해서 연습해보세요! 🚀

핵심 요약

  • 요소 선택 방법: getElementById, querySelector, querySelectorAll
  • 요소 조작: innerHTML, style, setAttribute, classList 활용
  • 실전 적용: 버튼 클릭 이벤트와 함께 동적인 변화 구현
728x90