这是我的 HTML 代码var link = document.getElementsByClassName("link");for (i = 0; i < link.length; i++) { link[i].addEventListener("click", click); function click() { console.log(link.indexOf(this)); }}<div class="links"> <ul> <li> <div class="hole-counter"><span></span></div><a class="link">Home</a> </li> <li> <div class="hole-counter"><span></span></div><a class="link">About</a> </li> <li> <div class="hole-counter"><span></span></div><a class="link">Gallery</a> </li> <li> <div class="hole-counter"><span></span></div><a class="link">Contact</a> </li> </ul></div>这是 javascript 代码我在控制台中收到此错误 Uncaught TypeError: link.indexOf is not a function at HTMLAnchorElement.click (index.html:97)
3 回答
翻翻过去那场雪
TA贡献2065条经验 获得超13个赞
你代码中的链接变量是HTMLCollection,使用前需要将其转换为数组 indexOf
你可以这样做
const links = [...document.getElementsByClassName("link")];
links.forEach(link => link.addEventListener("click", click));
function click() {
console.log(links.indexOf(this))
}
牧羊人nacy
TA贡献1862条经验 获得超7个赞
您的链接变量不是数组,因此您不能对其调用 indexOf()。您必须首先将链接转换为数组。 var link = Array.from(document.getElementsByClassName("link"));
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
您的链接变量只是一个变量,而 indexOf 函数专门用于数组。因此,您应该首先将变量转换为数组。您可以通过将其声明为数组或之后将其转换为数组来实现。
添加回答
举报
0/150
提交
取消