我在这里有两个条件,cond1和cond2。如果它是cond1,我将禁用我的onclick
事件,否则我将启用它。
这就是我所捕获的:
if(cond1) {
document.getElementById('mTag').removeAttribute("onclick");
} else {
document.getElementById('mTag').setAttribute('onclick');
}
问题是一旦onclick
被禁用,它就不会再次启用。如果是cond2
,则必须启用它。我究竟做错了什么?请提出一些解决方法。
答案 0 :(得分:4)
你为什么这样做?无论如何,这将是烦人的用户体验。更好的是禁用/启用标记:
document.getElementById('mTag').disabled = cond1;
要阻止点击事件,您必须prevent the event from bubbling upwards。
document.getElementById('mTag').onclick = function(e) {
if (!e) var e = window.event;
event.cancelBubble = !cond1;
...
};
答案 1 :(得分:1)
你做错了。删除属性不会取消绑定事件。 这是正确的方法:
document.getElementById("mTag").onclick = null;
答案 2 :(得分:1)
您无需删除onclick属性即可在处理程序中设置标记
var enable;
function myhandler() {
if (enable) {
//my code
}
}
if(cond1){
enable = false;
} else {
enabled = true;
}
答案 3 :(得分:1)
我认为最好设置一个标志,并在处理程序的开头检查该标志:
function handler(event) {
if ( !this.flag )
return;
// do the actual handling
}