일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- utf8mb4
- s3확장자
- max_allowed_packet
- react
- 코딩테스트
- axios
- 부족한 금액 계산하기
- 리액트
- 프로그래머스
- .env
- prettier
- 코드정렬
- express
- dotenv
- next #middleware
- 프리티어
- MySQL
- 커밋 한번에
- 리액트코드정렬
- 제일 작은 수 제거하기
- 자동완성방지
- AWS
- elasticIP
- reacts3
- 자연수 뒤집어 배열로 만들기
- EC2
- Node
- interactive_timeout
- vscode
- useReducer
- Today
- Total
Sungtt
6. 이벤트 핸들러의 방식 본문
브라우저는 키보드를 누를때나, 스크롤을 내릴때나, 클릭을 할때나
항상 이를 감지하고 이벤트를 발생시킨다. 특정 타입의 이벤트에
반응하여 어떠한 동작을 실행하고싶다면 이 이벤트 핸들러를 등록하여 할 수 있다.
- 이벤트 핸들러
이벤트가 발생했을 때 호출될 함수를 말한다.
- 이벤트 핸들러 등록
브라우저에게 이벤트 핸들러 호출을 위임하는것을 말한다.
- 이벤트 타입
브라우저에서 일어나는 이벤트의 종류들을 말한다.
click - 마우스를 클릭하였을 때
dbclick - 마우스를 더블 클릭하였을 때
keyup - 누르고 있던 키를 놓았을 때
등 자주 쓰는 이벤트 타입이 더 있고 총 200가지가 넘는다고 한다.
이벤트핸들러에는 총 3가지 방식이 있다.
1. 이벤트 핸들러 어트리뷰트 방식
HTML의 요소에 접두사 'on' 과 이벤트 타입의 'click'등 으로 이루어져있고
이에 스크립트의 함수를 할당하고 호출한다.
이때 알아둘 점은 onclick 자체에 함수문이 할당되는 방식이라는것이다.
<button onclick="func()">어트리뷰트 방식</button>
<script>
function func(){
console.log('안녕하세요!');
}
</script>
2. 이벤트 핸들러 프로퍼티 방식
어트리뷰트 방식과 마찬가지로 'on' 접두사와 이벤트 타입으로 이루어져있다.
다른점은 이벤트를 발생시킬 요소 이벤트 타겟과
이벤트 핸들러를 지정해주어야한다.
알아둘 점은 하나의 이벤트 타겟에는 하나의 이벤트만 바인딩 할 수 있다는 것이다.
재할당 시 뒤에 있는 이벤트가 호출된다.
<button>프로퍼티 방식<button>
<script>
let btn = documnet.querySelector("button");
btn.onclick = function(){
console.log("안녕하세요!");
}
</script>
3. addEventListener 방식
addEventListener 방식에서는 위에서 기술한 'on' 접두사를 붙였던것과 다르게
접두사를 제외한 이벤트 타입만 기입한다.
또 다른점은 이벤트 핸들러(함수)를 바인딩하는것이 아닌 인수로 전달하는 방식이기때문에
한번의 이벤트 타입으로도 다수의 이벤트 핸들러를 호출시킬 수 있다.
<button> addEventListener </button>
<script>
let btn = document.querySelector("button");
btn.addEventListener("click",function(){
console.log("안녕하세요!");
}
</script>
이벤트 핸들러의 이벤트 객체
브라우저에서 일어난 이벤트들은 이벤트 타입별로 각 이벤트 객체를 생성한다.
생성된 이벤트 객체는 이벤트 핸들러의 첫번째 인수에 할당된다.
각 이벤트 객체들은 console.log를 통하여 확인해보자.
예제
See the Pen Untitled by qirtudgus (@qirtudgus) on CodePen.
'JavaScript' 카테고리의 다른 글
RegExp 정규표현식 해석해보기 [비밀번호] (0) | 2022.04.13 |
---|---|
7. 문자열 변환 replace, replaceAll, substring (0) | 2022.03.13 |
5. data어트리뷰트와 dataset프로퍼티 (0) | 2022.01.07 |
4. html노드 생성과 삭제 (0) | 2022.01.06 |
3. DOM 스크롤 실시간 감지 (0) | 2022.01.04 |