这是我的 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条经验 获得超14个赞
你代码中的链接变量是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
	提交
		取消
	