이벤트란?
- 사용자나 브라우저가 자바스크립트를 사용해서 HTML 페이지(정확히 말하면 DOM)를 조작하는 것
- 이벤트는 사용자의 액션에 의해 발생한다 (마우스 클릭, 키보드 누르기, 페이지 불러오기 등)
- 이벤트가 발생하면 함수에 연결되며 해당 함수는 이벤트가 발생되면 실행된다
- 이벤트는 웹문서 영역 안에서 이루어지는 동작만을 의미한다
이벤트 종류
1. 페이지 로딩 이벤트
| 속성 | 설명 |
| load | 페이지의 로딩이 끝났을때 이벤트 발생 |
| unload | 현재 페이지에서 다른 페이지로 이동할때 이벤트 발생 |
| resize | 페이지 크기가 변경되었을때 이벤트 발생 |
| scroll | 페이지 화면이 스크롤 되었을때 이벤트 발생 |
| abort | 페이지 로딩이 중간에 중단되었을때 이벤트 발생 |
2. 마우스 이벤트
| 속성 | 설명 |
| click | 요소에 마우스를 클릭했을때 이벤트 발생 |
| dbclick | 요소에 마우스를 더블클릭했을때 이벤트 발생 |
| mousedown | 요소 위에서 마우스를 누르는 동안 이벤트 발생 |
| mousemove | 요소 위에서 마우스를 움직일때 이벤트 발생 |
| mouseover | 마우스가 요소로 옮겨질때 이벤트 발생 |
| mouseout | 마우스가 요소에서 벗어날때 이벤트 발생 |
| mouseup | 요소에 마우스를 뗄때 이벤트 발생 |
3. 키보드 이벤트
| 속성 | 설명 |
| keypress | 키를 눌렀을 때 이벤트 발생 (입력할 수 있는 키보드가 눌렸을때만 반응 / Ctrl, Alt, Shift 키 작동 안함) |
| keydown | 키를 눌렀을 때 이벤트 발생 (keypress 이벤트보다 더 권장되는 키보드 이벤트) |
| keyup | 키를 떼었을 때 이벤트 발생 |
4. 폼 이벤트
| 속성 | 설명 |
| focus | 폼요소에 포커스가 생겼을때 이벤트 발생 |
| blur | 폼요소에 포커스가 사라질때 이벤트 발생 |
| change | 폼요소의 상태가 변경되었을때 이벤트 발생 |
| reset | 폼이 다시 시작되었을때 이벤트 발생 |
| submit | submit 버튼을 눌렀을때 이벤트 발생 |
이벤트 등록
이벤트 등록이란?
- 이벤트가 발생했을때 실행하고 싶은 함수를 연결해주는 것을 이벤트 등록이라고 한다
- 이벤트에 연결해준 함수는 이벤트가 발생하기 전에는 실행되지 않다가(대기) 이벤트가 발생되면 실행된다(실행)
이벤트를 등록하는 두가지 방법
1. 이벤트 핸들러(이벤트 처리기)
- 이벤트와 이벤트 처리 함수를 연결해 주는 것을 이벤트 핸들러라고 한다
- 이벤트 이름에 on을 붙여주고 이벤트에 대한 동작(함수)을 처리한다
- 같은 이벤트 타입에 단 하나의 이벤트 핸들러 등록이 가능하다
예제
같은 이벤트 타입에 단 하나의 이벤트 핸들러 등록이 가능하므로 첫번째 이벤트 핸들러 onclick은 두번째 onclick에 덮어씌어지므로 두번째 이벤트 핸들러가 가지고 있는 함수만 실행된다
const button = document.querySelector("button")
button.onclick = () => {
console.log("First event handler!");
};
button.onclick = () => {
console.log("Second event handler!");
};
2. 이벤트 리스너
- 이벤트와 이벤트 처리 함수를 연결해 주는 것을 이벤트 핸들러라고 한다
- addEventListener 메소드를 사용해 이벤트에 대한 동작(함수)을 처리한다
- 이벤트 타입에 여러개의 이벤트 핸들러 등록이 가능하다
예제
같은 이벤트 타입에 여러개의 이벤트 핸들러 등록이 가능하므로 클릭 이벤트가 발생했을때 등록한 함수가 모두 실행된다
const button = document.querySelector("button")
button.addEventListener("click", () => {
console.log("First event listener!");
});
button.addEventListener("click", () => {
console.log("Second event listener!");
});
이벤트 등록 하는 3가지 방식
1. inline 방식
- 요소에 이벤트 핸들러를 등록해주는 방식
<button onclick="alert('Hello world');">Click Me</button>
2. property 방식
- 자바스크립트 파일에 요소를 불러온 후에 이벤트 핸들러를 등록해주는 방식
- HTML과 JavaScript를 분리할 수 있다는 장점이 있다
<button>Click Me</button>
<script>
const btn = document.querySelector('button');
btn.onclick = function() {
alert('Hello world');
};
</script>
3. addEventListener 메소드 방식
- EventTarget의 메소드로 이벤트를 항상 리스닝(대기중)하다가 이벤트가 발생했을때 등록했던 이벤트 리스너(함수)가 실행된다
- removeEventListener로 등록된 이벤트를 삭제해줄수 있다
- 가장 권장되는 이벤트 등록 방식이다
문법
EventTarget.addEventListener(type, listener, useCapture);
- 첫번째 파라미터 (필수): 이벤트 종류 (문자열)
- 두번째 파라미터 (필수): 이벤트가 발생할때 실행될 함수
- 세번째 파라미터 (선택): 이벤트 캡처링 사용 여부
- capture: false (default)
- capture: true
예제
const button = document.querySelector("button")
button.addEventListener("click", () => {
console.log("Hello World");
});
Reference
'JavaScript' 카테고리의 다른 글
| [자바스크립트] 자바스크립트에서 this란? (0) | 2022.11.18 |
|---|---|
| [자바스크립트] 객체 구조분해할당시 key 이름 다시 지정해주기 (0) | 2022.08.10 |
| [자바스크립트] 동기와 비동기란? 비동기적 코드 callback, promise, async와 await 사용법 (0) | 2022.08.08 |
| [자바스크립트] Lodash를 사용해서 배열 안에 같은 value를 가진 객체 데이터 삭제해주기 (데이터 고유화 작업) (0) | 2022.08.07 |
| [자바스크립트/한줄정리] 화살표 함수 생략 방법 (0) | 2022.07.08 |
댓글