JavaScript에서 DOM과 이벤트
JavaScript에서 DOM(Document Object Model)과 이벤트는 웹 개발에서 핵심적인 역할을 한다. DOM은 HTML 문서를 구조화하고 조작할 수 있게 하며, 이벤트는 사용자와의 상호작용을 처리하는 메커니즘을 제공한다.
01. DOM(Document Object Model)이란?
DOM은 HTML 문서의 계층 구조를 트리 형태로 표현한 것으로, JavaScript를 사용하여 문서를 동적으로 조작할 수 있게 한다. DOM은 HTML 요소를 노드(node)로 간주하며, 노드는 크게 다음과 같이 분류된다:
요소 노드(Element Node): <div>, <p>와 같은 HTML 태그
텍스트 노드(Text Node): 요소 내부의 텍스트
속성 노드(Attribute Node): 요소의 속성
DOM 요소 선택
JavaScript는 다양한 방법으로 DOM 요소를 선택할 수 있다:
document.getElementById("id"): 특정 ID를 가진 요소를 선택
document.querySelector("선택자"): CSS 선택자를 이용해 첫 번째 일치 요소를 선택
document.querySelectorAll("선택자"): CSS 선택자를 이용해 모든 일치 요소를 선택
예시:
const heading = document.getElementById("main-heading");
const paragraphs = document.querySelectorAll("p");
DOM 조작
선택한 DOM 요소를 JavaScript로 조작할 수 있다:
내용 변경: textContent, innerHTML
속성 변경: setAttribute, getAttribute
스타일 변경: style 속성
예시:
const element = document.querySelector("#myElement");
element.textContent = "새로운 텍스트";
element.style.color = "red";
02. 이벤트(Event)란?
이벤트는 사용자나 브라우저가 수행하는 특정 동작을 나타낸다. 버튼 클릭, 키보드 입력, 페이지 로드 등이 대표적인 이벤트이다. JavaScript는 이벤트 리스너를 사용하여 이러한 이벤트를 처리할 수 있다.
이벤트 리스너 추가
JavaScript에서는 addEventListener 메서드를 사용하여 이벤트 리스너를 추가할 수 있다.
형식:
element.addEventListener("이벤트 유형", 함수);
예시:
const button = document.querySelector("#myButton");
button.addEventListener("click", function () {
alert("버튼이 클릭되었습니다!");
});
주요 이벤트 유형
마우스 이벤트:
click: 클릭 시 발생
mouseover: 요소 위로 마우스를 올릴 때 발생
mouseout: 요소에서 마우스를 뗄 때 발생
키보드 이벤트:
keydown: 키를 눌렀을 때 발생
keyup: 키를 뗐을 때 발생
폼 이벤트:
submit: 폼 제출 시 발생
change: 입력 필드 값 변경 시 발생
문서 이벤트:
DOMContentLoaded: HTML 문서가 로드되고 DOM이 완전히 생성되었을 때 발생
이벤트 객체
이벤트가 발생하면 JavaScript는 자동으로 이벤트 객체를 전달한다. 이벤트 객체는 다음과 같은 유용한 정보를 제공한다:
target: 이벤트가 발생한 요소
type: 이벤트 유형
preventDefault(): 기본 동작 방지
stopPropagation(): 이벤트 전파 중단
예시:
const link = document.querySelector("a");
link.addEventListener("click", function (event) {
event.preventDefault(); // 기본 동작 방지
console.log("링크 클릭 이벤트가 발생했습니다.");
});
03. DOM과 이벤트의 결합
DOM과 이벤트는 함께 사용되어 동적인 웹 페이지를 구현한다. 아래는 DOM 요소와 이벤트를 결합한 간단한 예제이다:
예제: 클릭 시 텍스트 변경
<!DOCTYPE html>
<html>
<head>
<title>DOM과 이벤트 예제</title>
</head>
<body>
<h1 id="heading">Hello, World!</h1>
<button id="changeTextButton">텍스트 변경</button>
<script>
const button = document.querySelector("#changeTextButton");
const heading = document.querySelector("#heading");
button.addEventListener("click", function () {
heading.textContent = "텍스트가 변경되었습니다!";
});
</script>
</body>
</html>
DOM과 이벤트는 JavaScript에서 웹 페이지를 동적으로 조작하고, 사용자와의 상호작용을 처리하는 데 중요한 역할을 한다. 다양한 이벤트와 DOM 조작 방법을 활용하여 사용자 경험을 향상시킬 수 있다.