🍁Event
기본 코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>DOM 조작</h1>
<input type="button" value="버튼1" id="btn1">
<input type="button" value="버튼2" id="btn2">
<input type="button" value="버튼3" id="btn3">
<hr>
<div id="div1"></div>
<script>
document.getElementById('btn1').addEventListener('click', m1);
document.getElementById('btn2').addEventListener('click', m2);
document.getElementById('btn3').addEventListener('click', m3);
var div1 = document.getElementById('div1');
</script>
</body>
</html>
BOM
btn1.onclick = 함수;
//btn1.onclick = 함수;
btn1.onclick = m1;
btn1.onclick = m2; //덮어쓰기
function m1() {
alert('BOM');
}
이벤트 제거
btn2.onclick = m2;
function m2() {
btn1.onclick = null; //이벤트 제거
}
BOM에서 이벤트를 제거할 때에는 null을 적용하며, 새로운 이벤트를 적용하면 덮어쓰기가 된다.
DOM
btn2.addEventListener(이벤트종류, 함수);
btn2.addEventListener('click', m3);
function m3() {
alert('DOM');
}
DOM에서는 이벤트 종류와 함수를 인자로 받는다.
이벤트를 BOM 방식으로 건다고 해서 크게 불편함이 있는 것은 아니지만 DOM 방식으로 거는 게 좋다.
가끔은 회사에서 BOM 방식을 사용하지 말고 DOM 방식으로 사용하라고 하는 경우도 있다.
이벤트 제거
btn2.addEventListener('click', m4);
function m4() {
btn2.removeEventListener('click', m3);
}
DOM 방식에서 이벤트를 제거할 때에는 removeEventListener를 사용한다.
add를 하면 모두 누적이 되기 때문에 하나의 이벤트에 여러 함수가 동시에 등록되며, 이벤트 다중 목록을 관리할 수 있는 addEventListener를 지원한다.