如何删除onclick附加的事件侦听器

时间:2018-04-23 15:48:42

标签: javascript events event-handling

我需要一种方法来删除javascript中附加了onclick="func()"的事件侦听器

下面是示例代码



<!DOCTYPE html>
<html>
  <body>
  <script>
  function f1(){
      alert("f1");
  }
  function f2(){
      alert("f2");
      document.getElementById("b1").removeEventListener("click",f1);
  }
  </script>
  <button id="b1" type="button" onclick="f1()">B1</button>
  <button id="b2" type="button" onclick="f2()">B2</button>
 
  </body>
</html>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:1)

将另一个空白侦听器添加为

document.getElementById("b1").onclick = function() {
     return false;
   }

答案 1 :(得分:1)

您只需将元素的onclick属性设置为null

<!DOCTYPE html>
<html>

<body>
  <script>
    function f1() {
      alert("f1");
    }

    function f2() {
      alert("f2");
      document.getElementById("b1").onclick = null
    }
  </script>
  <button id="b1" type="button" onclick="f1()">B1</button>
  <button id="b2" type="button" onclick="f2()">B2</button>

</body>

</html>

这是因为当您执行onclick="f1()"时,浏览器会为您创建一个新功能,有些(但不完全)等同于此:

elem.onclick = new Function("event", "f1()")

这给你一个功能,如下所示:

elem.onclick = function(event) {
  f1()
}

因此,将该属性设置为null只会覆盖指定的函数,并将其设置回默认值。

答案 2 :(得分:1)

你可以改变它:

document.getElementById("b1").removeEventListener("click",f1);

为它:

document.getElementById("b1").onclick = null;

<!DOCTYPE html>
<html>
  <body>
  <script>
  function f1(){
      alert("f1");
  }
  function f2(){
      alert("f2");
      document.getElementById("b1").onclick = null;
  }
  </script>
  <button id="b1" type="button" onclick="f1()">B1</button>
  <button id="b2" type="button" onclick="f2()">B2</button>
 
  </body>
</html>

答案 3 :(得分:1)

将onclick设置为null可以正常工作,但您可能会注意到,如果您检查DOM,则onclick仍然存在。

另一种方法是使用removeAttribute

例如

<!DOCTYPE html>
<html>
  <body>
  <script>
  function f1(){
    alert("f1");
  }
  function f2(){
    alert("f2");
    document.getElementById("b1").
      removeAttribute("onclick");
  }
  </script>
  <button id="b1" type="button" onclick="f1()">B1</button>
  <button id="b2" type="button" onclick="f2()">B2</button>
 
  </body>
</html>