为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用javascript获取数组中当前单击元素的索引

无法使用javascript获取数组中当前单击元素的索引

aluckdog 2021-10-29 10:52:48
这是我的 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))

}


查看完整回答
反对 回复 2021-10-29
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

您的链接变量不是数组,因此您不能对其调用 indexOf()。您必须首先将链接转换为数组。 var link = Array.from(document.getElementsByClassName("link"));


查看完整回答
反对 回复 2021-10-29
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

您的链接变量只是一个变量,而 indexOf 函数专门用于数组。因此,您应该首先将变量转换为数组。您可以通过将其声明为数组或之后将其转换为数组来实现。


查看完整回答
反对 回复 2021-10-29
  • 3 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信