Javascript - 找到点击按钮的索引

时间:2017-03-28 16:51:55

标签: javascript

页面上有N个按钮,我需要找到点击的按钮。到目前为止,我有这个代码,它将显示按钮的数量,而不是按钮顺序:

Fiddle

var nodes = document.getElementsByTagName('button');

for (var i = 0; i < nodes.length; i++) {
   nodes[i].addEventListener('click', function() {
      console.log('You clicked element #' + );

   });
}

3 个答案:

答案 0 :(得分:2)

您需要创建一个闭包或使用bind,因为i的值在您实际点击之前和点击处理程序查找{{1}的值之前已经达到了最终值}}:

i

var nodes = document.getElementsByTagName('button'); for (var i = 0; i < nodes.length; i++) { nodes[i].addEventListener('click', function(i) { console.log('You clicked element #' + i); }.bind(null, i)); } 将创建一个当前值为bind的函数的副本,因此如果i在下一次迭代时发生更改,则不会造成任何损害。

答案 1 :(得分:2)

如果我理解你的问题,我现在不能解决你的问题吗?

  var nodes = document.getElementsByTagName('button');

  for (var i = 0, size = nodes.length; i < size; i++) {
    nodes[i].addEventListener('click', function(i) {
      console.log('You clicked element index' + i);
    }.bind(null, i));
  }

jsbin:https://jsbin.com/podicumeha/1/edit?html,console,output

答案 2 :(得分:1)

var nodes = document.getElementsByTagName('button');

for (var i = 0; i < nodes.length; i++) {
   nodes[i].addEventListener('click', function(index) {
      console.log('You clicked element index' + index);
   }.bind(this, i));
}