이벤트

반응하지 않는 페이지는 단순한 문서일 뿐입니다. 사람이 버튼을 클릭하거나, 검색창에 입력하거나, 폼을 제출할 때 무언가 일어나기를 원하는 순간, "이것이 일어나면, 이 코드를 실행해"라고 말할 방법이 필요합니다. 그것이 바로 이벤트입니다. 이 장은 사용자가 하는 일을 듣고 그에 반응하는 것에 관한 것입니다.
이벤트 듣기
**이벤트**는 페이지에서 일어나는 무언가입니다: 클릭, 키 누르기, 폼 제출. 이벤트에 반응하려면, 요소를 선택하고, 관심 있는 이벤트의 이름을 지정한 후, 실행할 함수를 넘겨줍니다.
그 함수를 핸들러라고 합니다. 이를 연결하는 메서드는 addEventListener입니다:
const button = document.querySelector(".buy-button");
button.addEventListener("click", () => {
console.log("누군가 구매를 클릭했습니다");
});왼쪽에서 오른쪽으로 읽으세요: 이 버튼에서 "click"을 듣고, 일어나면 이 함수를 실행합니다. 핸들러는 한 번이 아니라 이벤트가 일어날 때마다 실행됩니다. 3번 클릭하면 3번 실행됩니다.
핸들러는 일반적인 함수이고, 첨부하는 요소는 DOM에서 나옵니다. 요소를 선택하고 함수를 작성할 수 있다면, 사용자가 요소에 하는 일에 반응할 수 있습니다.
"click"같은 문자열로 명명한 후, addEventListener에 실행할 함수를 제공합니다. 그 함수는 핸들러이며, 한 번이 아니라 이벤트가 일어날 때마다 실행됩니다. 이 하나의 메서드가 페이지가 당신에게 반응하는 거의 모든 것 뒤에 있습니다. 이벤트 객체
브라우저가 핸들러를 실행할 때, 한 가지 정보를 넘겨줍니다: 일어난 일을 설명하는 이벤트 객체. 핸들러에 매개변수를 주어 이를 잡으세요, 보통 event라고 이름 지습니다:
const button = document.querySelector(".buy-button");
button.addEventListener("click", (event) => {
console.log(event.target); // 클릭된 요소
});가장 유용한 부분은 event.target: 이벤트가 일어난 요소입니다. 클릭이 버튼에 있었다면, event.target은 그 버튼입니다. 다시 선택할 필요가 없습니다, 이벤트가 이미 출처를 알려줍니다.
event라는 매개변수를 주어 이를 잡으세요. 가장 많이 사용할 부분은 event.target이며, 이벤트가 일어난 요소입니다. 다시 선택할 필요가 없습니다, 이벤트가 이미 출처를 알고 있습니다. 일반적인 이벤트
몇 가지 이벤트가 대부분 구축할 것을 다룹니다:
click: 사용자가 무언가를 클릭하거나 탭합니다.input: 텍스트 필드의 값이 입력할 때 변합니다.submit: 폼이 제출됩니다.keydown: 키가 눌러집니다.
까다로운 것은 submit입니다. 기본적으로 폼을 제출하면 페이지가 다시 로드되어 JavaScript가 하고 있던 모든 것이 지워집니다. 이를 중지하려면 핸들러 안에서 event.preventDefault()를 호출하세요:
const form = document.querySelector("form");
form.addEventListener("submit", (event) => {
event.preventDefault(); // 페이지가 다시 로드되는 것을 중지합니다
console.log("폼이 제출되었습니다, 페이지가 그대로 있습니다");
});click, input, submit, 및 keydown입니다. 기억할 것은 submit: 폼은 기본적으로 페이지를 다시 로드하므로 핸들러에서 event.preventDefault()를 호출해서 이를 중지하고 제어를 유지하세요. 놓치면 페이지가 당신 아래에서 새로 고쳐지며, 이는 처음에는 혼동합니다. 이벤트 다음은 어디인가요
이벤트는 페이지가 듣는 방식입니다. 요소를 선택하고, 관심 있는 것의 이름을 지정하고, 일어나면 함수를 실행하며, 진행하면서 이벤트 객체의 세부 정보를 읽습니다. 거의 모든 대화형 기능이 그 루프로부터 구축됩니다.
자연스러운 다음 단계는 핸들러에서 느린 작업을 수행하는 것입니다, 폼을 서버에 보내거나 새 데이터를 로드하는 것처럼, 페이지를 멈추지 않고. 그것이 async 코드가 하는 것이며, 다음 장입니다. 객체에서 유지하는 항목 목록과 같은 구조화된 데이터에 도달하는 핸들러는 이미 알고 있는 것도 활용합니다.

