| 메서드 | 설명 |
|---|---|
document.getElementById('id') | id 속성으로 요소 하나를 선택. (가장 빠름) |
document.querySelector('selector') | CSS 선택자 문법으로 가장 먼저 일치하는 요소 하나를 선택. (매우 유용하고 강력함) |
document.querySelectorAll('selector') | CSS 선택자 문법으로 일치하는 모든 요소를 NodeList(유사 배열)로 선택. |
// <h1 id="title">Hello</h1>
const titleElement = document.getElementById('title');
// <button class="btn">Click Me</button>
const buttonElement = document.querySelector('.btn');
addEventListener)element.addEventListener('eventType', eventHandlerFunction) 메서드를 사용하는 것이 가장 표준적이고 권장되는 방법입니다.
const myButton = document.querySelector('#my-button');
// 이벤트 핸들러 함수
function handleClick() {
alert('Button was clicked!');
}
// 버튼에 'click' 이벤트가 발생하면 handleClick 함수를 실행하도록 등록
myButton.addEventListener('click', handleClick);
이벤트 객체: 이벤트 핸들러 함수는 이벤트 객체를 첫 번째 인자로 받습니다. 이 객체에는 이벤트에 대한 상세 정보(e.g., event.target - 이벤트가 발생한 요소)가 담겨 있습니다.
선택한 DOM 요소의 내용을 변경하거나, 스타일을 바꾸고, 새로운 요소를 추가/삭제할 수 있습니다.
내용 및 속성 변경:
element.textContent = 'New text': 요소의 텍스트 내용만 변경.element.innerHTML = '<h1>New HTML</h1>': 요소 내부에 HTML 코드를 삽입. (보안 주의)스타일 변경:
element.style.color = 'red': 인라인 스타일을 직접 변경.element.classList.add('active'): 클래스 추가.element.classList.remove('hidden'): 클래스 제거.element.classList.toggle('highlight'): 클래스 토글(있으면 제거, 없으면 추가).요소 생성 및 추가/삭제:
document.createElement('div'): 새로운 요소를 생성.parentElement.appendChild(childElement): 자식 요소로 추가.element.remove(): 요소 자신을 제거.지금까지 배운 개념을 종합하여, 사용자가 할 일을 입력하고 추가할 수 있는 간단한 Todo 리스트를 만들어 봅니다.
HTML:
<input type="text" id="todo-input" placeholder="할 일을 입력하세요">
<button id="add-btn">추가</button>
<ul id="todo-list"></ul>
JavaScript:
// 1. DOM 요소 선택
const input = document.querySelector('#todo-input');
const addButton = document.querySelector('#add-btn');
const list = document.querySelector('#todo-list');
// 2. 이벤트 리스너 등록
addButton.addEventListener('click', function() {
const todoText = input.value;
// 입력값이 없으면 아무것도 하지 않음
if (todoText === '') {
return;
}
// 3. DOM 요소 생성 및 조작
const newListItem = document.createElement('li'); // 새로운 <li> 요소 생성
newListItem.textContent = todoText; // 내용 설정
list.appendChild(newListItem); // <ul>에 자식으로 추가
// 입력창 비우기
input.value = '';
input.focus();
});
querySelector)] → [2. 이벤트 감지 (addEventListener)] → [3. 요소 조작 (textContent, classList, appendChild 등)] 순서로 이루어집니다.