addEventListenerjavascript
定義和用法css
addEventListener 用於向指定元素添加事件句柄(又稱事件處理函數)html
語法java
element.addEventListener(event, function, useCapture)函數
element 文檔節點,duocument,window。this
event 必須有。是一個字符串,指定事件名(通常不使用「on前綴」,例如「click,mouseover」)。spa
function 必須有。指定要事件觸發時執行的函數(能夠是函數,也能夠是函數名)。code
useCapture 可選。布爾值(true 或者false)指定事件是否在捕獲階段仍是在冒泡階段執行,通常狀況下默認值爲false htm
一、若是爲true則事件句柄在捕獲階段執行對象
二、若是爲false則事件句柄在冒泡階段執行
實例
經過點擊按鈕改變背景色(主要代碼):
document.getElementById("Btn").addEventListener("click",function(){
document.getElementById("box").style.backgroundColor = 'green';
});
實例
能夠在文檔中添加多個事件,添加的事件不會覆蓋已存在的事件, 該下實例演示瞭如何在<button>元素中添加兩個點擊事件:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <style type="text/css"> #box{ width:50px; height:50px; background-color: red; } </style> <body> <div id="box"> </div> <button id="Btn">點擊</button> <script type="text/javascript"> document.getElementById("Btn").addEventListener("click",function(){ document.getElementById("box").style.backgroundColor = 'green'; }); document.getElementById("Btn").addEventListener("click",function(){ this.style.backgroundColor = 'red'; }); </script> </body> </html>
實例
能夠經過函數名來引用外部函數(主要代碼):
document.getElementById("Btn").addEventListener("click",changeColor ,true);
function changeColor(){
document.getElementById("box").style.backgroundColor = 'green';
}
有useCapture值時:就要想到 addEventListener-事件流
當一個事件發生時,會有三個階段
捕獲觸發 從根節點開始挨個往下,檢測每一個節點是否檢查是否調用了事件處理函數。若是調用了事件處理函數,而且 useCapture 爲 true,則調用該事件處理函數。
目標觸發 觸發在目標對象自己調用了事件處理函數。
冒泡觸發 從目標節點到根節點,檢測每一個節點是否調用了事件處理函數。若是調用了事件處理函數,而且 useCapture 爲 false,則調用該事件處理函數。
一、 捕獲時,如下執行結果爲 2,1
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <button id="Btn">點擊</button> <script type="text/javascript"> //捕獲時觸發, 當useCapture爲true時觸發,所以如下執行的結果是2,1 var btn=document.getElementById('Btn'); btn.addEventListener('click',function(){alert('1');},false); document.body.addEventListener('click', function(){alert('2');},true); //捕獲時觸發 </script> </body> </html>
二、 冒泡時,如下執行結果爲1,2
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <button id="Btn">點擊</button> <script type="text/javascript"> //冒泡時觸發, 當useCapture爲false時觸發,所以如下執行的結果是1,2 var btn=document.getElementById('Btn'); btn.addEventListener('click',function(){alert('1');},false); document.body.addEventListener('click', function(){alert('2');},false); //冒泡時觸發 </script> </body> </html>