添加當用戶點擊按鈕時觸發的事件監聽器:瀏覽器
document.getElementById("myBtn").addEventListener("click", displayDate);
addEventListener() 方法爲指定元素指定事件處理程序。函數
addEventListener() 方法爲元素附加事件處理程序而不會覆蓋已有的事件處理程序。spa
您可以向一個元素添加多個事件處理程序。code
您可以向一個元素添加多個相同類型的事件處理程序,例如兩個 "click" 事件。xml
您可以向任何 DOM 對象添加事件處理程序而非僅僅 HTML 元素,例如 window 對象。對象
addEventListener() 方法使咱們更容易控制事件如何對冒泡做出反應。blog
當使用 addEventListener() 方法時,JavaScript 與 HTML 標記是分隔的,已達到更佳的可讀性;即便在不控制 HTML 標記時也容許您添加事件監聽器。seo
您可以經過使用 removeEventListener() 方法輕鬆地刪除事件監聽器。事件
element.addEventListener(event, function, useCapture);
第一個參數是事件的類型(好比 "click" 或 "mousedown")。ip
第二個參數是當事件發生時咱們須要調用的函數。
第三個參數是布爾值,指定使用事件冒泡仍是事件捕獲。此參數是可選的。
注意:請勿對事件使用 "on" 前綴;請使用 "click" 代替 "onclick"。
當用戶點擊某個元素時提示 "Hello World!":
element.addEventListener("click", function(){ alert("Hello World!"); });
您也能夠引用外部「命名」函數:
當用戶點擊某個元素時提示 "Hello World!":
element.addEventListener("click", myFunction); function myFunction() { alert ("Hello World!"); }
addEventListener() 方法容許您向相同元素添加多個事件,同時不覆蓋已有事件:
element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);
您可以向相同元素添加不一樣類型的事件:
element.addEventListener("mouseover", myFunction); element.addEventListener("click", mySecondFunction); element.addEventListener("mouseout", myThirdFunction);
addEventListener() 容許您將事件監聽器添加到任何 HTML DOM 對象上,好比 HTML 元素、HTML 對象、window 對象或其餘支持事件的對象,好比 xmlHttpRequest 對象。
添加當用戶調整窗口大小時觸發的事件監聽器:
window.addEventListener("resize", function(){ document.getElementById("demo").innerHTML = sometext; });
當傳遞參數值時,請以參數形式使用調用指定函數的「匿名函數」:
element.addEventListener("click", function(){ myFunction(p1, p2); });
在 HTML DOM 中有兩種事件傳播的方法:冒泡和捕獲。
事件傳播是一種定義當發生事件時元素次序的方法。假如 <div> 元素內有一個 <p>,而後用戶點擊了這個 <p> 元素,應該首先處理哪一個元素「click」事件?
在冒泡中,最內側元素的事件會首先被處理,而後是更外側的:首先處理 <p> 元素的點擊事件,而後是 <div> 元素的點擊事件。
在捕獲中,最外側元素的事件會首先被處理,而後是更內側的:首先處理 <div> 元素的點擊事件,而後是 <p> 元素的點擊事件。
在 addEventListener() 方法中,你可以經過使用「useCapture」參數來規定傳播類型:
addEventListener(event, function, useCapture);
默認值是 false,將使用冒泡傳播,若是該值設置爲 true,則事件使用捕獲傳播。
document.getElementById("myP").addEventListener("click", myFunction, true); document.getElementById("myDiv").addEventListener("click", myFunction, true);
removeEventListener() 方法會刪除已經過 addEventListener() 方法附加的事件處理程序:
element.removeEventListener("mousemove", myFunction);
表格中的數字規定了徹底支持這些方法的首個瀏覽器版本。
方法 | |||||
addEventListener() | 1.0 | 9.0 | 1.0 | 1.0 | 7.0 |
removeEventListener() | 1.0 | 9.0 | 1.0 | 1.0 | 7.0 |
註釋:IE 八、Opera 6.0 及其更早版本不支持 addEventListener() 和 removeEventListener() 方法。不過,對於這些特殊的瀏覽器版本,您可使用 attachEvent() 方法向元素添加事件處理程序,並由 detachEvent() 方法刪除:
element.attachEvent(event, function); element.detachEvent(event, function);
跨瀏覽器解決方案:
var x = document.getElementById("myBtn");
if (x.addEventListener) { // 針對主流瀏覽器,除了 IE 8 及更正版本
x.addEventListener("click", myFunction);
} else if (x.attachEvent) { // 針對 IE 8 及更早版本 x.attachEvent("onclick", myFunction); }