Categories: JavaScript

JavaScript 자바스크립트 이벤트 핸들러 (EventHandler)

이벤트 핸들러란?

이벤트 핸들러는 사용자의 입력, 마우스 움직임, 키보드 조작 등의 다양한 이벤트에 반응하여 실행되는 함수입니다. 이는 사용자와 웹 페이지 간의 상호작용을 가능하게 하며, 웹사이트의 동적 기능을 구현하는 데 중요한 역할을 합니다.

이벤트 핸들러의 특징

  1. 인라인 이벤트 핸들러: HTML 요소 내에 직접 작성되는 방식입니다. 간편하지만, HTML과 자바스크립트 코드가 혼합되어 유지보수가 어렵고, 이벤트 리스너를 한 번에 하나만 할당할 수 있는 단점이 있습니다.
  2. 속성을 이용한 이벤트 핸들러: DOM 요소의 프로퍼티에 함수를 할당하는 방식입니다. 이벤트 핸들러가 HTML과 분리되어 유지보수에 유리하지만, 여전히 한 요소에 하나의 이벤트 리스너만 할당할 수 있다는 제약이 있습니다.
  3. addEventListener를 사용한 이벤트: 가장 모던하고 권장되는 방식입니다. 여러 이벤트를 하나의 요소에 할당할 수 있으며, 이벤트 캡처링과 버블링을 제어할 수 있는 옵션이 있습니다.

이벤트 핸들러의 종류

이벤트 핸들러설명예제
onclick요소를 클릭했을 때 발생합니다.element.onclick = function() { alert(‘클릭!’); };
ondblclick요소를 더블 클릭했을 때 발생합니다.element.ondblclick = function() { alert(‘더블 클릭!’); };
onmouseover마우스가 요소 위로 이동했을 때 발생합니다.element.onmouseover = function() { alert(‘마우스 오버!’); };
onmouseout마우스가 요소에서 벗어났을 때 발생합니다.element.onmouseout = function() { alert(‘마우스 아웃!’); };
onmousemove마우스가 요소 위에서 움직일 때 발생합니다.element.onmousemove = function() { alert(‘마우스 이동!’); };
onmousedown마우스 버튼이 요소 위에서 눌렸을 때 발생합니다.element.onmousedown = function() { alert(‘마우스 다운!’); };
onmouseup마우스 버튼이 요소 위에서 떼어졌을 때 발생합니다.element.onmouseup = function() { alert(‘마우스 업!’); };
onwheel마우스 휠이 요소 위에서 움직였을 때 발생합니다.element.onwheel = function() { alert(‘휠 이동!’); };
onkeydown키보드의 키가 눌렸을 때 발생합니다.element.onkeydown = function() { alert(‘키 다운!’); };
onkeyup키보드의 키가 떼어졌을 때 발생합니다.element.onkeyup = function() { alert(‘키 업!’); };
onkeypress키보드의 키가 눌리고 있는 동안 발생합니다.element.onkeypress = function() { alert(‘키 프레스!’); };
onfocus요소가 포커스를 받았을 때 발생합니다.element.onfocus = function() { alert(‘포커스!’); };
onblur요소가 포커스를 잃었을 때 발생합니다.element.onblur = function() { alert(‘블러!’); };
onchange입력 필드의 값이 변경되었을 때 발생합니다.element.onchange = function() { alert(‘변경됨!’); };
oninput입력 필드에 입력이 이루어질 때 마다 발생합니다.element.oninput = function() { alert(‘입력 중!’); };
onsubmit폼이 제출될 때 발생합니다.formElement.onsubmit = function() { alert(‘제출됨!’); };
onreset폼이 리셋될 때 발생합니다.formElement.onreset = function() { alert(‘리셋됨!’); };
onselect사용자가 텍스트를 선택했을 때 발생합니다.element.onselect = function() { alert(‘선택됨!’); };
onload문서나 이미지가 로드되었을 때 발생합니다.window.onload = function() { alert(‘로드 완료!’); };
onunload페이지가 언로드될 때 발생합니다.window.onunload = function() { alert(‘언로드!’); };
onresize창이 리사이즈될 때 발생합니다.window.onresize = function() { alert(‘리사이즈!’); };
onscroll요소를 스크롤할 때 발생합니다.element.onscroll = function() { alert(‘스크롤!’); };

이벤트 핸들러의 활용

  1. 폼 유효성 검사: 사용자가 폼을 제출하기 전에 입력 데이터의 유효성을 검증합니다.
  2. 동적 인터페이스 조작: 사용자의 액션에 따라 웹 페이지의 요소를 동적으로 추가, 삭제, 스타일 변경 등을 수행합니다.
  3. 사용자 피드백 제공: 마우스 오버, 클릭 등에 대한 즉각적인 시각적, 텍스트적 피드백을 제공합니다.
  4. 애니메이션 효과 구현: 사용자 인터랙션에 반응하여 웹 페이지의 요소에 애니메이션 효과를 추가합니다. 예를 들어, 버튼 위에 마우스를 올리면 버튼이 확대되는 효과 등입니다.
  5. 드래그 앤 드롭 기능: 사용자가 요소를 드래그하여 다른 위치로 이동시킬 수 있도록 하는 기능을 구현합니다. 이는 파일 업로드, 이미지 갤러리, 대시보드 위젯 등에서 자주 사용됩니다.

이벤트 핸들러 예제

HTML과 JavaScript를 사용하여 ‘클릭하여 색상 변경’ 기능을 구현하는 예제입니다.

HTML 코드

HTML
<!DOCTYPE html>
<html>
<head>
    <title>이벤트 핸들러 예제</title>
</head>
<body>

<button id="colorButton">색상 변경</button>

<script src="script.js"></script>

</body>
</html>
HTML

이 코드에서는 button 요소를 만들고, 이 버튼에 id 속성으로 “colorButton”을 부여했습니다. 이 id는 JavaScript에서 해당 버튼을 참조하기 위해 사용됩니다.

JavaScript 코드 (script.js)

JavaScript
document.addEventListener('DOMContentLoaded', function() {
    const button = document.getElementById('colorButton');
    button.onclick = changeColor;
});

function changeColor() {
    const colors = ['red', 'blue', 'green', 'yellow', 'purple'];
    const randomColor = colors[Math.floor(Math.random() * colors.length)];
    document.body.style.backgroundColor = randomColor;
}
JavaScript

  1. 문서 로드 대기: document.addEventListener(‘DOMContentLoaded’, function() {…}); 여기서는 문서가 완전히 로드될 때까지 기다린 후 스크립트를 실행합니다.
  2. 버튼 요소 참조: const button = document.getElementById(‘colorButton’); 이 코드는 HTML에서 id가 “colorButton”인 버튼 요소를 찾아 button 상수에 저장합니다.
  3. 이벤트 핸들러 할당: button.onclick = changeColor; 이 부분에서는 button 요소의 onclick 이벤트에 changeColor 함수를 할당합니다. 이 함수는 사용자가 버튼을 클릭할 때마다 실행됩니다.
  4. 색상 변경 함수: changeColor 함수는 colors 배열에서 랜덤한 색상을 선택하여 색을 변경합니다.

작동 방식

  • 사용자가 웹 페이지를 열면, DOMContentLoaded 이벤트가 발생하고 JavaScript 코드가 실행됩니다.
  • 사용자가 “색상 변경” 버튼을 클릭하면, changeColor 함수가 호출되어 색이 랜덤하게 변경됩니다.

이 예제는 이벤트 핸들러를 사용하여 웹 페이지의 동적 상호작용을 만드는 기본적인 방법을 보여줍니다. 이벤트 핸들러는 웹 개발에서 다양한 방식으로 활용될 수 있으며, 사용자 경험을 풍부하게 하는 데 큰 역할을 합니다.

결론

이벤트 핸들러는 웹 개발에서 필수적인 요소로, 사용자와 웹사이트 간의 상호작용을 동적으로 만들어 줍니다. 간단한 인터랙션에서부터 복잡한 애플리케이션 기능에 이르기까지, 이벤트 핸들러는 웹사이트의 사용자 경험을 향상시키는 데 중요한 역할을 합니다. 따라서 웹 개발자로서 이벤트 핸들러를 효과적으로 사용하고 이해하는 것은 사용자에게 매력적이고 동적인 웹사이트를 제공하는 데 있어 필수적입니다.

suover

Recent Posts

Java 자바 Enum 열거형 사용법

Enum이란? Enum은 "enumeration"의 줄임말로, 특정 값들의 집합을 정의할 수 있는 특별한 클래스입니다. 예를 들어, 요일,…

3주 ago

Java 자바 래퍼 클래스(Wrapper Class)란? 래퍼 클래스의 필요성

래퍼 클래스(Wrapper Class)란? 자바에서 래퍼 클래스는 기본 데이터 타입(Primitive Data Type)을 객체(Object)로 감싸는 클래스입니다. 자바의…

3주 ago

Java 자바 StringBuilder 개념 및 특징 주요 메소드

서론 Java에서 문자열을 다룰 때, 문자열의 변경이 빈번하게 발생하는 경우라면 StringBuilder 클래스를 사용하는 것이 매우…

4주 ago

웹 개발 FitOn 팀 프로젝트 회고

서론 현대인들은 점점 더 운동과 건강에 대한 관심을 가지고 있으며, 이를 체계적으로 관리하고 공유할 수…

1개월 ago

Java 자바 String 클래스 특징 및 메소드

String 클래스란? 자바에서 String 클래스는 가장 널리 사용되는 클래스 중 하나입니다. 문자열 시퀀스를 나타내며, 문자열을…

2개월 ago

Java 자바 불변 객체(Immutable Object) 개념 정리

불변 객체란? 불변 객체(Immutable Object)는 생성된 이후 그 상태를 변경할 수 없는 객체를 의미합니다. 불변…

2개월 ago