亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

使用removeHandler句柄時沒反應,沒有刪除事件程序

<input type="button" name="" value="按鈕" id="btn" />

var eventUtil={

addHandler:function(element,type,handler){//添加句柄

if(element.addEventListener){//DOM 二級

element.addEventListener(type, handler, false);

}else if(element.attachEvent){//低版本瀏覽器(IE9以下)

element.attachEvent('on'+type,handler);

}else{//DOM 零級

element['on'+type]=handler;//element.onclick === element['onclick']

}

},

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;

}

},

};

?

var btn=document.getElementById('btn');

eventUtil.addHandler(btn,'click',function(){-----------------------------------這個一直執行

alert(this.value);? -----------------------這里還有一個問題,在IE9以下(不包括IE9),這里this.value為undefined?這是怎么回事啊

});

eventUtil.removeHandler(btn,'click',function(){-----------------------------------刪除了,但是不起作用,還會執行addHandler

alert(this.value);

});


正在回答

1 回答

你的后面的代碼寫的有bug ,將var btn=document.getElementById('btn');后面的代碼

修改為:

function cons(event) {

alert(event.type);

}

eventUtil.addHandler(btn, 'click', cons);

//eventUtil.removeHandler(btn, 'click', cons);

因為你刪除句柄的時候要求參數和添加句柄時是一致的,包括第三個參數:函數,所以不能使用匿名函數。將這個函數封裝起來就可以了,

它傳進去的是click這個事件本身,所以是沒有值的,但是你可以把刪除句柄的代碼注釋掉運行一下看這個事件的type.如上。


1 回復 有任何疑惑可以回復我~
#1

qq_巧詐不如絀誠_0 提問者

可以了,非常感謝!
2018-05-20 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

使用removeHandler句柄時沒反應,沒有刪除事件程序

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號