개발노트

고즐의 개발 및 서버 개발 노트

DOM 조작 핵심 패턴 10가지로 끝내는 현대 JavaScript

# DOM조작 # JavaScript기초 # 프론트엔드실전 # 이벤트핸들링 # UI개발

Js 2025.12.11 12일 전 17 회 읽음 1



DOM 조작 핵심 패턴 10가지로 끝내는 현대 JavaScript

jQuery 없이도 대부분의 UI 기능을 구현할 수 있는 것이 지금의 DOM API다. 요소 선택부터 클래스 제어, 속성 변경, 노드 생성까지 실제 웹 개발에서 가장 자주 사용되는 DOM 조작 패턴을 정리해 소개한다. 이 패턴만 익혀도 UI 개발의 대부분을 수행할 수 있다.

브라우저 환경이 표준화되면서 DOM 조작은 간결해지고 직관적으로 변했다. 특히 querySelector와 classList는 jQuery 시대를 완전히 대체하는 대표 기능이다. 아래 패턴은 실제 웹사이트 인터랙션 제작 시 가장 자주 사용하는 방식들로 구성했다.


1. 요소 선택: querySelector / querySelectorAll

DOM 선택은 모든 조작의 시작이다. CSS 선택자 문법을 그대로 사용하므로 직관적이고 학습 난도가 낮다.

const box = document.querySelector('.box');
const items = document.querySelectorAll('.item');


2. 클래스 제어: classList

클래스 추가, 제거, 토글 등 UI 변화를 제어할 때 가장 많이 사용하는 기능이다.

box.classList.add('active');
box.classList.remove('hidden');
box.classList.toggle('open');
  • 토글 버튼
  • 메뉴 열기/닫기
  • 보임/숨김 전환


3. 속성과 데이터 제어: setAttribute / dataset

요소의 속성 변경이나 사용자 정의 데이터 전달은 인터랙션 구현에 자주 사용된다.

link.setAttribute('href', '/home');
btn.dataset.state = 'active';

dataset은 서버 값 전달, UI 상태 저장 등에 유용하다.


4. 텍스트 및 HTML 제어

콘텐츠 변경은 innerText 또는 innerHTML로 수행한다. 안전성과 목적에 따라 선택하면 된다.

title.innerText = '완료되었습니다';
content.innerHTML = '

업데이트 성공

';


5. 요소 생성 및 삽입: createElement

동적으로 UI를 구성할 때 새로운 DOM 노드를 생성해 원하는 위치에 삽입할 수 있다.

const li = document.createElement('li');
li.innerText = '새 항목';
list.appendChild(li);
  • 새 댓글 추가
  • 동적 카드 UI
  • 서버 데이터 리스트 렌더링


6. 요소 삭제: remove()

DOM 노드를 직접 제거할 수 있으며, 이벤트나 참조를 별도로 제거할 필요가 없다.

item.remove();


7. 스타일 직접 조작: style

빠르게 UI 변화를 줘야 한다면 style 속성을 활용한다. 다만 반복 사용 시 CSS 클래스화를 권장한다.

box.style.display = 'block';
box.style.backgroundColor = '#f3f3f3';


8. 부모·형제 탐색

DOM 구조를 기준으로 특정 부모나 형제 요소에 접근해야 하는 경우가 잦다.

const parent = item.closest('.row');
const next = item.nextElementSibling;
const prev = item.previousElementSibling;


9. 반복 처리: NodeList forEach

여러 요소를 가져와 동일한 작업을 반복할 때 가장 유용한 패턴이다.

document.querySelectorAll('.btn').forEach(btn => {
    btn.classList.add('ready');
});


10. 이벤트 기반의 상태 관리

각 요소에 이벤트를 연결해 UI 상태를 전환하는 것은 DOM 인터랙션의 핵심이다. addEventListener로 대부분 해결된다.

btn.addEventListener('click', () => {
    btn.dataset.state = btn.dataset.state === '1' ? '0' : '1';
    btn.classList.toggle('active');
});


DOM 패턴을 익히면 UI 제작 속도가 올라가는 이유

위 10개의 패턴은 실제 UI 개발에서 가장 빈번하게 사용된다. 요소 선택, 클래스 조작, 이벤트 연결만 익히면 메뉴, 모달, 아코디언, 토글 버튼 등 대부분의 기능을 구현할 수 있다. 또 jQuery 의존성이 사라져 페이지 전체 로딩 속도까지 개선된다.

다음 4편에서는 이벤트 처리의 실전 패턴과 UI 컴포넌트 구현 방식을 정리한다. 이를 통해 현대 웹사이트에서 요구하는 인터랙션 기능을 모두 구현할 수 있다.

문의답변