웹에서 일어날 수 있는 이벤트는 매우 다양하다. 아래는 자주 사용되는 이벤트의 카테고리와 그에 속하는 일부 이벤트의 예시를 나열한 것이다.
이 외에도 다양한 종류의 이벤트가 있다. 웹 API 및 라이브러리나 프레임워크에서 제공하는 커스텀 이벤트들도 많다. 이벤트와 관련된 자세한 내용은 MDN 웹 문서나 관련 자료에서 확인할 수 있다.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap 5 Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<a>Hi</a>
<p id="text">Hello</p>
<button class="btn2">버튼</button>
<button onclick="alert('버튼이 클릭됐습니다.')" class="btn">버튼</button>
<h2>Title</h2>
<form id="form-id" class="form-container">
<div id="form-first-div" class="mb-3 mt-3">
<label for="email" class="form-label">Email:</label>
<input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
</div>
<div class="mb-3">
<label for="pwd" class="form-label">Password:</label>
<input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pswd">
</div>
<div class="form-check mb-3">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="remember"> Remember me
</label>
</div>
<button type="submit" class="btn btn-primary submit-btn">Submit</button>
</form>
</div>
<script src="script.js"></script>
</body>
const submitBtn = document.querySelector('.submit-btn');
const form = document.querySelector('form');
const title = document.querySelector('h2');
//CLICK EVENT
submitBtn.addEventListener('click', handleEvent);
submitBtn.addEventListener('dblclick', handleEvent);
submitBtn.addEventListener('mousedown', handleEvent);
submitBtn.addEventListener('mouseup', handleEvent);
submitBtn.addEventListener('mouseenter', handleEvent);
submitBtn.addEventListener('mouseleave', handleEvent);
submitBtn.addEventListener('mousemove', handleEvent);
function handleEvent(e) {
e.preventDefault();
console.log(`Event Type: ${e.type}`);
title.textContent = `MouseX: ${e.clientX}, MouseY: ${e.clientY}`
}
이 JavaScript 코드는 DOM (Document Object Model)에서 특정 요소들을 선택하고, 그 요소들에 이벤트 리스너를 추가하는 것에 관한 예제이다. 코드의 각 부분을 자세히 살펴보자.
요소 선택하기
const submitBtn = document.querySelector('.submit-btn');
const form = document.querySelector('form');
const title = document.querySelector('h2');
이벤트 리스너 추가하기
submitBtn.addEventListener('click', handleEvent);
submitBtn.addEventListener('dblclick', handleEvent);
submitBtn.addEventListener('mousedown', handleEvent);
submitBtn.addEventListener('mouseup', handleEvent);
submitBtn.addEventListener('mouseenter', handleEvent);
submitBtn.addEventListener('mouseleave', handleEvent);
submitBtn.addEventListener('mousemove', handleEvent);
submitBtn 요소에 여러 이벤트 리스너를 추가한다. 이벤트 리스너는 해당 이벤트가 발생할 때마다 지정된 함수(handleEvent 함수)를 호출한다.
여기서 추가된 이벤트들은 다음과 같다.
이벤트 핸들러 함수
function handleEvent(e) {
e.preventDefault();
console.log(`Event Type: ${e.type}`);
title.textContent = `MouseX: ${e.clientX}, MouseY: ${e.clientY}`
}
결과적으로, 이 코드는 submitBtn 요소에 대한 다양한 마우스 이벤트가 발생할 때마다 이벤트의 타입을 콘솔에 출력하고, 마우스의 현재 위치를 페이지의 h2 태그에 표시한다.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap 5 Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<a>Hi</a>
<p id="text">Hello</p>
<button class="btn2">버튼</button>
<button onclick="alert('버튼이 클릭됐습니다.')" class="btn">버튼</button>
<h2>Title</h2>
<form id="form-id" class="form-container">
<div id="form-first-div" class="mb-3 mt-3">
<label for="email" class="form-label">Email:</label>
<input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
</div>
<div class="mb-3">
<label for="pwd" class="form-label">Password:</label>
<input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pswd">
</div>
<div class="form-check mb-3">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="remember"> Remember me
</label>
</div>
<button type="submit" class="btn btn-primary submit-btn">Submit</button>
</form>
</div>
<script src="script.js"></script>
</body>
const form = document.querySelector('form');
const emailInput = document.getElementById('email');
const title = document.querySelector('h2');
//FORM EVENT
form.addEventListener('submit', handleEvent);
emailInput.addEventListener('keydown', handleEvent);
emailInput.addEventListener('keyup', handleEvent);
emailInput.addEventListener('keypress', handleEvent);
emailInput.addEventListener('focus', handleEvent);
emailInput.addEventListener('blur', handleEvent);
emailInput.addEventListener('cut', handleEvent);
emailInput.addEventListener('paste', handleEvent);
emailInput.addEventListener('input', handleEvent);
function handleEvent(e) {
if(e.type ==='submit') {
e.preventDefault();
}
console.log(`Event Type: ${e.type}`);
// title.textContent = `MouseX: ${e.clientX}, MouseY: ${e.clientY}`
title.textContent = e.target.value;
}
<form>
요소를 선택한다.<h2>
요소를 선택한다.<h2>
요소의 텍스트를 해당 입력 필드의 값으로 변경한다.요약하면, 이 코드는 <form>
요소와 이메일 입력 필드에서 발생하는 여러 가지 이벤트를 감지하고, 이벤트 발생 시 해당 이벤트의 정보를 콘솔에 출력하며, 이메일 입력 필드의 값이 변경될 때마다 <h2>
요소의 텍스트를 해당 값으로 업데이트하는 동작을 수행한다.