我正在尝试检查是否应通过单击 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] 删除。
我来说两句