如何在几个按钮的循环中使用onclick?

时间:2016-09-17 22:09:41

标签: javascript loops onclick

我有6个按钮,都有“测试”类。 我希望所有人都能在1到6之间显示他们的号码。

我的代码是:

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

但我的console.log只显示“6”。 我能做什么(用最短的代码)?

1 个答案:

答案 0 :(得分:0)

您可以在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>

您也可以使用Array.from()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>