这是我的第一个问题所以请不要讨厌我:) 试图寻找它,但我无法找到我需要的东西。 如何使用已单击的类.circle打印div的索引? Here's my code
var circle = document.querySelectorAll(".circle");
for(i=0; i<circle.length; i++){
circle[i].addEventListener("click", function(){
this.classList.toggle("hide");
console.log(circle.indexOf(this));
})
}
谢谢!
答案 0 :(得分:2)
确保在let
循环中使用for
并console.log(i)
var circle = document.querySelectorAll(".circle");
for(let i=0; i<circle.length; i++){
circle[i].addEventListener("click", function(){
this.classList.toggle("hide");
console.log(i);
})
}
答案 1 :(得分:1)
只需稍加改动:只需将NodeList转换为数组(数组有一个indexOf函数):
var circle = Array.from(document.querySelectorAll(".circle"));
或者,您可以简单地获取迭代的索引:
var circle = document.querySelectorAll(".circle");
for(let i=0; i<circle.length; i++){
circle[i].addEventListener("click", function(){
this.classList.toggle("hide");
console.log(i);
})
}
答案 2 :(得分:0)
如果通过“index”表示其querySelectorAll
调用返回的集合中的索引,则可以使用querySelectorAll
的{{1}}(这是相对较新的,但可填充的):
forEach
答案 3 :(得分:0)
由于您使用i
作为迭代器遍历元素,因此只需在i
循环中使用let
将for
声明为另一个变量,然后就可以了只需使用console.log(i)
来显示每个圈子的索引:
var circle = document.querySelectorAll(".circle");
for(let i=0; i<circle.length; i++){
circle[i].addEventListener("click", function(){
this.classList.toggle("hide");
console.log(i);
})
}
答案 4 :(得分:0)
可能对某人有用,在ES5中使用闭包的相同解决方案:
var circle = document.querySelectorAll(".circle");
for(var i=0; i<circle.length; i++){
(function(i) {
circle[i].addEventListener("click", function(){
this.classList.toggle("hide");
console.log(i);
});
})(i);
}