為什么刪除function()沒作用???問題在文中最后面有注釋的地方,求解!
var eventUtil = {
//添加句柄
addHandler:function(element, type, handler) {
if(element.addEventListener) {
element.addEventListener(type, handler, false); ? //如果支持DOM2級
}
else if(element.attachEvent) {
element.attachEvent('on'+type, handler); ? ?//支持IE
}
else {
element['on'+type] = handler; ? ? ? ? ? ? //DOM0級
}
},
//刪除句柄
removeHandler:function(element, type, handler) {
if(element.removeEventListener) {
element.removeEventListener(type, handler, false); ??
}
else if(element.detachEvent) {
element.detachEvent('on'+type, handler); ? ?
}
else {
element['on'+type] = null; ? ? ? ? ? ??
}
}
}
//調用封裝好的對象
eventUtil.addHandler(btn1, 'click', showMe);
eventUtil.removeHandler(btn1, 'click', showMe);
eventUtil.addHandler(btn2, 'click', function(){alert('我是' + this.value)});
eventUtil.removeHandler(btn2, 'click', function(){alert('我是' + this.value)});//這個沒反應???
2016-06-07
因為,removeEventListener()移除時傳入的參數與添加處理程序時使用的參數相同。匿名函數無法移除。
element, type, handler,這三個參數,element:要在該元素上清除事件.type:事件類型.是鍵盤事件或是鼠標事件,handler:事件名稱.函數的名稱。
function Alert(){alert('我是' + this.value)}
eventUtil.addHandler(btn2, 'click', Alert); //添加
eventUtil.removeHandler(btn2, 'click', Alert); ?//刪除