删除或覆盖.onclick = function(){}

时间:2019-05-21 10:18:26

标签: javascript

我现在是活跃的开发人员的网站使用了外部加载的脚本。它包含DOM中给定元素上的事件侦听器。以下示例触发了该事件

document.getElementById('my_id').onclick = function() { /*code*/ }

我尝试使用以下示例删除监听器,但无济于事。

document.getElementById('my_id').onclick = ''
document.getElementById('my_id').addEventListener('click', function(e){ /*code*/ })
document.getElementById('my_id').removeEventListener("click")

我无法控制此外部代码,但需要停止其行为。目前我的尝试失败了,我试图找出原因

2 个答案:

答案 0 :(得分:0)

null或空白函数分配给onclick

const btn = document.querySelector("button");
btn.onclick = function() {
  btn.onclick= null;
  alert("removed");
}
<button>Click me</button>

这个问题已经回答:

How do you override inline onclick event?

Remove and replace another onclick function in a div through Pure Javascript?

答案 1 :(得分:0)

只需分配一个空函数,如下所示:

document.querySelector('#main').onclick = () => {}

工作版本

document.querySelector('#main').onclick = () => console.log('clicked')
document.querySelector('#remove').onclick = () => document.querySelector('#main').onclick = () => {}
<button id="main">Click me</button>
<button id="remove">Remove the listener</button>