0

我在这里有两个条件, cond1 和 cond2 。如果它是 cond1 我将禁用我的onclick事件,否则我将启用它。

这是我捞出来的:

if(cond1) {
    document.getElementById('mTag').removeAttribute("onclick");
} else {
    document.getElementById('mTag').setAttribute('onclick');
}

问题是一旦onclick被禁用,它就不会再次启用。如果是cond2,则必须启用它。我究竟做错了什么?请提出一些解决方案。

4

4 回答 4

4

为什么要这么做?无论如何,这将是烦人的用户体验。更好的是禁用/启用标签:

document.getElementById('mTag').disabled = cond1;

为了防止点击事件,你必须防止事件向上冒泡

document.getElementById('mTag').onclick = function(e) {
    if (!e) var e = window.event;
    event.cancelBubble = !cond1;

    ...
};
于 2013-01-07T10:59:59.560 回答
1

你做错了。删除该属性不会取消绑定事件。这是正确的方法:

document.getElementById("mTag").onclick = null;
于 2013-01-07T10:59:57.517 回答
1

你不需要删除 onclick 属性你可以在你的处理程序中设置一个标志

var enable;
function myhandler() {
    if (enable) {
        //my code
    }
}

if(cond1){
   enable = false;
} else {
   enabled = true;
}
于 2013-01-07T11:00:25.643 回答
1

我认为最好设置一个标志,并在处理程序的开头检查该标志:

function handler(event) {
  if ( !this.flag )
    return;
  // do the actual handling
}
于 2013-01-07T11:00:39.243 回答