Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-查找已单击按钮的索引_Javascript - Fatal编程技术网

Javascript-查找已单击按钮的索引

Javascript-查找已单击按钮的索引,javascript,Javascript,我有N个按钮在页面上,我需要找到哪个按钮被点击。到目前为止,我有这个代码,它将显示按钮的数量,而不是按钮顺序: var nodes=document.getElementsByTagName('button'); 对于(var i=0;i

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

var nodes=document.getElementsByTagName('button');
对于(var i=0;i
您需要创建一个闭包或使用
bind
,因为在实际单击以及单击处理程序查找
i
的值之前,
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));
}
var nodes=document.getElementsByTagName('button');
对于(var i=0;i

bind
将创建一个当前值为
i
的函数副本,因此如果
i
在下一次迭代中发生更改,则不会造成任何伤害。

您需要创建一个闭包或使用
bind
,由于
i
的值在实际单击之前以及单击处理程序查找
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));
}
var nodes=document.getElementsByTagName('button');
对于(var i=0;i

bind
将创建一个当前值为
i
的函数副本,因此如果
i
在下一次迭代中发生更改,则不会造成任何伤害。

我现在不知道是否理解您的问题,但这是否解决了您的问题

  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));
  }
var nodes=document.getElementsByTagName('button');
对于(var i=0,size=nodes.length;i

jsbin:

我现在不知道我是否理解你的问题,但这能解决你的问题吗

  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));
  }
var nodes=document.getElementsByTagName('button');
对于(var i=0,size=nodes.length;i
jsbin:

var nodes=document.getElementsByTagName('button');
对于(var i=0;i
var nodes=document.getElementsByTagName('button');
对于(var i=0;i
console.log('您单击了元素#'+节点[i]);这应该行得通,我相信不行,@redsecurityOh抱歉,我把我也不行的节点[i],@redsecurityconsole.log('您单击了元素#'+节点[i]);这应该行得通,我相信不行,@redsecurity哦,对不起,我把我也不行的节点[i]放进去,@redsecurity尝试了代码,仍然得到了文件总数。添加了fiddle link()尝试了代码,仍然得到了文件总数。添加了小提琴链接()