Ch.10 이벤트와 완성 — 인터랙티브 홈페이지
이벤트 리스너
addEventListener로 클릭, 입력, 제출 이벤트를 처리할 수 있다이벤트 객체(event)에서 필요한 정보를 추출할 수 있다form의 submit 이벤트에서 preventDefault()를 사용할 수 있다
버튼을 클릭하면 무언가 일어나게 하려면?
지금까지는 페이지가 로드될 때 한 번만 코드가 실행되었습니다. 사용자의 행동(클릭, 입력, 스크롤)에 반응하려면 '이벤트'를 알아야 합니다.
사용자 행동에 코드를 연결하는 방법은?
addEventListener — '이 버튼을 클릭하면 이 함수를 실행해' 라고 브라우저에 알려주는 방법입니다.
article
핵심 내용
요소에 이벤트를 연결하여 사용자 행동에 반응합니다
// 기본 구조: 요소.addEventListener("이벤트", 함수)
const btn = document.querySelector("#myBtn");
btn.addEventListener("click", () => {
alert("버튼이 클릭되었습니다!");
});
// input 이벤트 — 입력할 때마다 실행
const input = document.querySelector("#search");
input.addEventListener("input", (event) => {
console.log(event.target.value); // 입력된 값
});이벤트 객체에는 유용한 정보가 가득합니다
// event 객체 활용
btn.addEventListener("click", (event) => {
console.log(event.target); // 클릭된 요소
console.log(event.type); // "click"
console.log(event.clientX); // 마우스 X좌표
});
// form submit — 페이지 새로고침 방지!
const form = document.querySelector("#myForm");
form.addEventListener("submit", (event) => {
event.preventDefault(); // 기본 동작(새로고침) 막기
const name = document.querySelector("#nameInput").value;
console.log(`입력된 이름: ${name}`);
});preventDefault() 가 필요한 이유: form의 submit 이벤트는 기본적으로 페이지를 새로고침합니다. JavaScript로 데이터를 처리하려면 이 기본 동작을 막아야 합니다.
클릭할 때마다 카운트가 올라가는 좋아요 버튼을 만들어봅시다
form의 submit 이벤트에서 페이지 새로고침을 막으려면?
요소에 클릭 이벤트를 등록하려면 element.___("click", 함수) 를 사용한다
다음 중 이벤트가 발생한 요소를 참조하는 속성은?
이벤트 마스터!
key
핵심 용어
👆
click
요소를 클릭했을 때
⌨️
input
입력 필드의 값이 변할 때
📤
submit
폼이 제출될 때
🔤
keydown
키보드 키를 눌렀을 때
edit_note
정리 노트
이벤트 리스너 핵심 정리
이벤트 처리
- addEventListener()
- 요소에 이벤트 핸들러를 등록하는 메서드
- click / input / submit
- 자주 사용하는 3대 이벤트 타입
- event 객체
- 이벤트 발생 시 자동으로 전달되는 정보 묶음
주요 메서드·속성
- event.target
- 이벤트가 실제로 발생한 요소를 가리킴
- preventDefault()
- 폼 제출 등 기본 동작을 차단
- 이벤트 위임
- 부모 요소에 리스너 하나로 자식 이벤트를 처리
★
이벤트 리스너는 사용자와 페이지를 연결하는 다리입니다.
image
시각 자료
다이어그램: wd-scene-js-events
check_circle
핵심 정리
- 1addEventListener("이벤트", 함수)로 이벤트 등록
- 2event.target = 이벤트 발생 요소, event.preventDefault() = 기본 동작 방지
- 3click, input, submit 세 가지 핵심 이벤트
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작