웹페이지에서 마우스를 클릭했을 때, 키를 입력했을 때, 특정 요소에 포커스가 이동되었을 때 어떤 사건을 발생시키는 것
<button id="btn">버튼</button> <script> document.getElementById('btn').onclick = function(ev){ console.log(ev.type); console.log(ev.target); console.log(ev); } </script> // '버튼' 을 클릭하면 콘솔에 이벤트의 타입, 타겟을 나타내는 코드
<script> onload = function(){ document.getElementById('box').textContent = 'Hello World'; } </script> <div id="box"></div> //
'on' + 이벤트 타입
function f1(){} 문서객체.onclick = f1
문서객체.onclick = function(){}
<button id="btn1">클릭</button> <script> function fn1(){ alert('Hello'); } function fn2(){ alert('안녕하세요'); } /* 2개의 이벤트 리스너(fn1,fn2)는 등록되지 않는다 document.getElementById('btn1').onclick = fn1; document.getElementById('btn1').onclick = fn2; // fn1은 없어지고 fn2로 덮어쓰기 됨 */ function fn3(){ fn1(); fn2(); } document.getElementById('btn1').onclick = fn3; document.getElementById('btn1').onmouseover = function(){ fn3(); } </script>
하나의 이벤트가 여러 개의 이벤트 리스너를 가질 수 있음
이벤트 등록 시 '이벤트 타입'을 사용
처리 방식
function fn1() {
}
function fn2() {
}
문서객체.addEventListener('click',fn1);
문서객체.addEventListener('click',fn2);
익명 함수
문서객체.addEventListener('click',function(){});
EX)
<button id="btn2">클릭</button> <script> function fn1(){ alert('Hello'); } function fn2(){ alert('안녕하세요'); } /* 표준 이벤트 모델은 여러 개의 이벤트 리스너를 등록할 수 있다! */ document.getElementById('btn2').addEventListener('click',fn1); document.getElementById('btn2').addEventListener('click',fn2); document.getElementById('btn2').addEventListener('mouseover', function(){ fn1(); fn2(); }); </script>
HTML 구성요소에 직접 이벤트 속성을 추가하고 이벤트 리스너를 등록하는 방식
간단한 작업의 경우 이벤트 리스너를 생략하고(함수 생략) 본문만 작성할 수 있음
처리 방식
선언적 함수
<button onclick="fn1()"></button> function fn1() { }
익명 함수
<button{}">
이벤트 리스너 생략
<button></button>
EX)
<button id="btn3" onclick="fn3()" onmouseover="fn3()">클릭</button> <script> function fn1(){ alert('Hello'); } function fn2(){ alert('안녕하세요'); } function fn3(){ fn1(); fn2(); } </script>
<button id="btn4">클릭</button> <script> document.getElementById('btn4').onclick = function(event){ // 이벤트 대상 확인 console.log(event.target.textContent); console.log(this.textContent); // 위아래 같음 // 이벤트 대상 변경 event.target.textContent = '눌렀어?'; this.textContent = '또 눌렀어?'; } </script>
window.onload = function(){ // 모든 코드를 읽은 후 진행 document.getElementById('btn5').onclick = function(event){ alert(event.target.textContent); } } </script> <button id="btn5">클릭</button>