2016-09-17 14 views
0

私は6つのボタンを持っています。これらはすべて "テスト"クラスです。複数のボタンのループでonclickを使用するにはどうすればよいですか?

for (n=0 ; n < document.getElementsByClassName("test").length ; n++) { 
    document.getElementsByClassName("test")[n].onclick = function() { console.log(n); }; 
} 

しかし、私にconsole.logは唯一の「6」を表示:私はそれらのすべてが1と6

私のコードの間で、その数を表示したい です。 できるだけ早く(できるだけ短いコードで)行うことができますか?

答えて

0

あなたは、あなたが代わりに、Array.prototype.forEach()

Array.from(document.getElementsByClassName("test")) 
 
.forEach(function(el, i) { 
 
    el.onclick = function() { 
 
    console.log(i) 
 
    } 
 
})
<div class="test">click</div> 
 
<div class="test">click</div>

Array.from()を使用することができ forループ

for (n = 0; n < document.getElementsByClassName("test").length; n++) { 
 
    (function(i) { 
 
    document.getElementsByClassName("test")[i].onclick = function() { 
 
     console.log(i); 
 
    }; 
 
    }(n)) 
 
}
<div class="test">click</div> 
 
<div class="test">click</div>

の内部でクロージャを使用することができます

+0

魅力的な作品です。ありがとうございました :) – Squiller

関連する問題