addEventListener 函数在 javascript 中不起作用

萨宾789

我正在尝试检查是否应通过单击 console.log 触发的功能,但控制台消息从未出现

<script src="e-com.js" async></script>

这就是我在头部链接js文件的方式

<a href="" id="remove">Remove</a>

这是我想要活动的链接

let removeItem=document.getElementById("remove")
for (i=0; i<removeItem.length; i++){
let  remove = removeItem.addEventListener("click", function(){

  console.log("Clicked");
  })
}

这是js函数

阿纳夫·托拉特

问题似乎是您正在尝试遍历 的结果getElementById(),它不会返回可迭代的。


要修复它,您只需要删除循环。下面的代码应该可以正常工作^

const removeItem = document.getElementById("remove");

removeItem.addEventListener("click", () => {
  console.log("Clicked!");
});
<a href="" id="remove">Remove</a>

根据MDN 网络文档

Document方法getElementById()返回一个Element对象,该对象表示其id属性与指定字符串匹配的元素。

正如它所说,它getElementById()返回一个Element,简而言之,它只是一个对象。这就是为什么你不能迭代它。


如果你想用一个for循环来监听多个对象,你需要改变一些东西。

首先,您不能使用id, 因为该id属性是唯一的,并且只能在 HTML 文档中使用一次。因此,要获取多个元素,需要使用class属性。class请参阅下面使用的属性示例。

<div class="division">Division!</div>

class任何 HTML 元素都可以使用该属性。

因此,要获取所有类并对其进行迭代,您需要使用getElementsByClassName()方法或querySelectorAll()方法。

两者的唯一区别是getElementsByClassName()返回一个live HTMLCollection,而querySelectorAll()返回一个static HTMLCollection

如果您要使用querySelectorAll(),您的代码将如下所示^

const removeItem = document.querySelectorAll("remove");

Array.from(removeItem).forEach((ele) => {
  ele.addEventListener("click", () => {
    console.log("Clicked!");
  });
});
<a href="" class="remove">Remove</a>
<a href="" class="remove">Remove</a>
<a href="" class="remove">Remove</a>


这两种解决方案都应该可以正常工作,但它们取决于您需要完成的工作。


^代码稍作修改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章