이벤트란?
- 웹 브라우저나 사용자가 행하는 동작
- 웹 문서 영역안에서 이루어지는 동작만 가리킴
- 주로 마우스나 키보드를 사용할 때, 웹 문서를 불러올 때, 폼에 내용을 입력할 때 발생
이벤트의 종류
* 마우스 이벤트
* 키보드 이벤트
* 폼 이벤트
* 문서 로딩 이벤트
이벤트 | 설명 |
---|---|
click | 마우스 버튼을 클릭했을 때 |
dbclick | 마우스 버튼을 더블 클릭했을 때 |
mousedown | 마우스 버튼을 누르고 있을 때 |
mouseup | 누르고 있던 마우스 버튼을 뗄 때 |
mousemove | 마우스를 움직일 때 (터치스크린에서 동작하지 않는다) |
mouseover | 마우스를 요소 위로 움직였을 때 (터치스크린에서 동작하지 않는다) |
mouseout | 마우스를 요소 밖으로 움직였을 때 (터치스크린에서 동작하지 않는다) |
mouseenter | 해당 요소에 마우스 커서를 올려다 놓았을 때 |
mouseleave | 해당 요소에 마우스 커서를 빼낼 때 |
이벤트 | 설명 |
---|---|
keydown | 키를 누르고 있을 때 |
keyup | 누르고 있던 키를 뗄 때 |
keypress | 키를 누르고 뗏을 때 |
이벤트 | 설명 |
---|---|
focus | 대상에 포커스가 들어왔을 때 |
blur | 대상에 포커스가 벗어났을 때 |
input | input 또는 textarea 요소의 값이 변경되었을 때 |
change | 체크박스, 라디오 버튼의 값이 변경되었을 때 |
submit | submit버튼을 눌러 폼을 제출할 때 |
reset | 리셋버튼을 눌렀을 때 |
이벤트 | 설명 |
---|---|
abort | 웹 문서가 완전히 로딩되기 전에 불러오기를 멈췄을 때 |
error | 문서가 정확히 로딩되지 않았을 때 |
load | 문서 로딩이 완료되었을 때 |
resize | 문서 화면 크기가 바뀌었을 때 |
scroll | 문서 화면이 스크롤 되었을 때 |
unload | 문서를 벗어날 때(링크를 클릭, 브라우저 창을 닫을때 등) |
이벤트 핸들러 (event handler)
이벤트가 발생하면 그에 맞는 반응을 하여야 한다.
이를 위해 이벤트는 일반적으로 함수에 연결되며 그 함수는 이벤트가 발생하기 전에는 실행되지 않다가 이벤트가 발생되면 실행된다. 이러한 함수를 이벤트 핸들러라 하며 이벤트에 대응하는 처리를 기술한다.
이벤트 핸들러 등록하기
자바스크립트에서 이벤트 핸들러를 등록하는 방법은 세 가지가 있다.
1. HTML 태그에 등록하는 방법
2. DOM 요소의 프로퍼티로 등록하는 방법
3. addEventListener 메서드를 사용하는 방법
1. HTML 태그에 설정 (권장 X)
이 방법은 사실상 간단한 방법이지만 HTML과 자바스크립트 코드가 섞여있기 때문에 나중에 유지보수가 힘들다.
또한 태그 하나에 하나의 이벤트처리만 등록할 수 있다.
기본적으로 HTML과 자바스크립트는 분리하는게 맞다.
>> 이렇게 on다음에 이벤트 타입을 적어준다.
>> 다른방법으로, sayHello라는 함수를 정의해서 태그안에 이벤트핸들러를 등록했다.
2. DOM 요소 객체의 프로퍼티에 등록
이 방법을 사용하면 HTML과 자바스크립트를 분리할 수 있지만 위와 마찬가지로 특정 DOM 요소 객체에
하나의 이벤트 핸들러만 등록시키는 단점이 있다.
>> 이번에는 버튼에 id를 주고 핸들러를 할당했다.
이때 sayHello의 괄호는 없어야한다. 괄호가 있으면 함수의 반환값이 할당되며 지금은 undefined 상태기 때문이다.
3. addEventListener 메서드 사용
addEventListener 함수 방식은 아래와 같은 장점을 갖는다.
- 하나의 이벤트에 대해 하나 이상의 이벤트 핸들러를 추가할 수 있다.
- 캡처링과 버블링을 지원한다
- HTML 요소뿐만 아니라 모든 DOM요소에 대해 동작한다. 브라우저는 웹 문서를 로드한 후 파싱하여 DOM을 생성한다.
addEventListener는 특정 이벤트가 발생하면, 전달된 함수 즉 핸들러를 실행한다.
위의 코드에서 특정 이벤트는 click이며, 전달된 함수는 sayHello이다.
인수로 sayHello라는 함수를 넘겨주어도 되고 아래처럼 직접 함수를 작성해서 넘겨줄수도 있다.
'JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트 객체 (브라우저와 관련된 객체) (0) | 2022.08.15 |
---|---|
[JavaScript] 자바스크립트와 객체 (Date, Math) (0) | 2022.08.15 |
[JavaScript] 함수(일반함수, 익명함수, 즉시실행함수, 화살표함수) (0) | 2022.08.14 |
[JavaScript] 자바스크립트 기본 문법 (반복문) (0) | 2022.08.13 |
[JavaScript] 자바스크립트 기본 문법 (조건문) (0) | 2022.08.13 |