javascript - 无法使用删除事件监听器

标签 javascript

function attachEvent(element, event, callbackFunction) {
  if(element.addEventListener)  {
    element.addEventListener(event, function(){
      removeArray();
      callbackFunction(this.getAttribute("src"));
    }, false);
  }
}


function removeEvent(){
  var element = document.querySelectorAll('.Dicon');
  element.removeEventListener("click", handler);
  console.log("remove");
}

我有一些类称为Dicon的图像,我使用addEventlistner让他们能够点击,但现在我想删除eventlistner,但不知何故我无法让它工作,我出现错误。

错误

Uncaught TypeError: element.removeEventListener is not a function 

我该如何解决这个问题?它们都是图像。

最佳答案

querySelectorAll 返回一个集合,而不是单个元素。如果您只想获取第一个匹配元素,请使用querySelector(不要使用All)。否则,您可以使用 length 对集合进行索引(例如,对第一个匹配元素使用 [0] ,对第二个匹配元素使用 [1] )知道有多少人。

您还需要定义处理程序

请注意,您无法删除在第一个代码块中使用 addEventListener 附加的处理程序,因为要删除处理程序,您必须提供 <强>相同removeEventListener的函数引用与您给addEventListener的函数引用相同,但您不这样做拥有该引用,因为您直接将函数表达式传递到 addEventListener 中。

您需要将该引用保留在某处(例如变量或属性),以便稍后使用它来删除处理程序。

关于javascript - 无法使用删除事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36644361/

相关文章:

javascript - Highcharts jQuery 渲染问题 - 所有浏览器

javascript - 从toggle()延迟hide()

javascript - 前端还是后端匹配密码?

javascript - Dropzone.js 删除页面加载时创建的模拟文件时,默认添加文件消息显示

javascript - 如何在特定转换事件后加载组件内的元素

javascript - Uncaught Error : Based on the provided shape, [1024,3],张量应该有 3072 个值但有 30

javascript - 使用 javascript 填充选择菜单选项

javascript - Reactjs 最佳实践。何时使用渲染函数与何时使用新组件

javascript - JS - 使用正则表达式获取字符串替换的原始值

javascript - React JS 将组件添加到特定的点击行