删除事件监听器,箭头功能

时间:2020-10-23 21:51:39

标签: javascript

我想问你,如何使用arrwo函数删除事件监听器?我在这里尝试了一些方法但没有用 有解决方案吗?

add.addEventListener("click" , ()=> {
  let b = document.createElement("input");
  b.setAttribute("id" , "dif");
  b.type = "number";
  b.placeholder = "Write Third Number";
  calc.append(b);
  
})

add.removeEventListener("click" );

3 个答案:

答案 0 :(得分:3)

要删除,您需要引用您为添加操作提供的回调,因此您需要在外部声明该函数并将其提供给add事件侦听器,然后将其删除:

let myClick = ()=> {
  let b = document.createElement("input");
  b.setAttribute("id" , "dif");
  b.type = "number";
  b.placeholder = "Write Third Number";
  calc.append(b); 
};

add.addEventListener("click" , myClick ):

add.removeEventListener("click", myClick );

答案 1 :(得分:1)

如果要使用removeEventListener,则添加时需要使用命名函数。

function listener () {
  let b = document.createElement("input");
  b.setAttribute("id" , "dif");
  b.type = "number";
  b.placeholder = "Write Third Number";
  calc.append(b);
}
add.addEventListener("click", listener);
...
add.removeEventListener("click", listener);

答案 2 :(得分:1)

之所以不起作用,是因为removeEventListener要求您将事件类型(例如click)和要删除的事件侦听器函数(箭头函数)作为参数传递。

必须同时提供两者的原因是因为您可以为同一事件的同一事件附加多个事件侦听器。

要使其正常运行,您有两种解决方案:

  1. 将箭头函数提取为命名函数。例如:
function doSomethingOnClick() {
// Do some stuff
}

element.addEventListener('click', doSomethingOnClick);

// later ...

element.removeEventListener('click', doSomethingOnClick);
  1. 将箭头功能分配给变量。例如:
const doSomethingOnClick = () => console.log('Doing some stuff ...');

element.addEventListener('click', doSomethingOnClick);

// later ...

element.removeEventListener('click', doSomethingOnClick);

有关更多信息,请查看Mozilla's documentation