2017-08-21 9 views
3

これは私の最初の質問ですので、私を憎むことはありません:) それを探してみましたが、私は必要なものを見つけることができませんでした。 クリックされたクラス.circleでdivのインデックスを印刷するにはどうすればよいですか? Here's my codeJavaScriptのインデックスを見つける

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

@KobyDouek:上記では、それは常に 'circle.length'が記録されます。 (でもそれは修正可能です) –

+0

@MatthewCiaramitaro:わかっています。参照:http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example –

+2

インデックスのdiv音がぎこちない。実際の要件は何ですか? – brk

答えて

2

forループにletを使用してください。ちょうど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

ほんの少しの変更:単純に配列(配列はindexOfの機能を持っている)へのNodeListを変換:

また
var circle = Array.from(document.querySelectorAll(".circle")); 

Try it

、あなたは単に反復のインデックスを取ることができます

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); 
    }) 
} 
0

「インデックス」による場合は、そのquerySelectorAll呼び出しによって返されたコレクション内のインデックスを意味し、あなたが使用することができますquerySelectorAllforEach(比較的新しいが、polyfillableである):ので

var circle = document.querySelectorAll(".circle"); 
circle.forEach(function(circle, index) { 
circle.addEventListener("click", function(){ 
    this.classList.toggle("hide"); 
    console.log(index); 
}); 
0

iを反復子としてループし、iletのループで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); 
    }) 
} 
+0

他のすべての要素(これとは反対の要素)のクラスを変更する方法はありますか? –

+0

@JakubMatwiejewすべての要素?または他の要素の下にあるすべての要素? –

+0

クリックしていないすべてのサークル –

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); 
} 
関連する問題