addEventListener()與removeEventListener()
阿新 • • 發佈:2018-11-08
所有的DOM節點中都包含addEventListener()與removeEventListener()這兩種方法,用於追加事件和刪除追加。
接受引數:要處理的事件名、作為事件處理程式的函式和一個布林值。 (3個)
最後這個布林值引數是true,表示在捕獲階段呼叫事件處理程式;如果是false,表示在冒泡階段呼叫事件處理程式。預設為false;
假如在一個按鈕上新增一個點選事件,程式碼如下:
var btn = document.getElementById("myBtn"); btn.addEventListener("click", function () { alert(this.id); }, false);
使用DOM2級方法新增事件處理程式的主要好處是可以新增多個事件處理程式。來看下面的例子:
var btn = document.getElementById("myBtn");
btn.addEventListener("click", function () {
alert(this.id);
}, false);
btn.addEventListener("click", function () {
alert("Hello World");
}, false);
通過addEventListener()新增的事件處理程式只能使用removeEventListener()來移除;移除時傳入的引數與新增處理程式時使用的引數相同
var btn = document.getElementById("myBtn");
btn.addEventListener("click", function () {
alert(this.id);
}, false);
btn.removeEventListener("click", function () { //無效!
alert(this.id);
}, false);
在這個例子中,removeEventListener無法刪除addEventListener所追加的事件,因為兩個方法並不相等,記憶體地址已經是不同的 ,如下面的例子所示:
var btn = document.getElementById("myBtn");
var handler = function () {
alert(this.id);
};
btn.addEventListener("click", handler, false);
btn.removeEventListener("click", handler, false); //有效!