var g = document.getElementById('my_div');
for (var i = 0, len = g.children.length; i < len; i++)
{
(function(index){
g.children[i].onclick = function(){
alert(index) ;
}
})(i);
}
所以我看到上面的例子展示了如何获取被点击元素的索引。我注意到它使用“index”作为参数。不幸的是我只知道indexof所以这是如何工作的?谷歌搜索时无法找到关于“索引”的任何内容:javascript索引属性或javascript索引参数。
编辑:我真的没有看到函数调用(i)因为它太小了。
答案 0 :(得分:2)
其他答案和评论都是正确的,index
在这种情况下只是一个函数参数,但我会(尝试)解释一下这里发生了什么。
正如其他人所说,index
只是一个变量,在这种情况下是函数的参数。这里的名称index
没有什么特别之处,可能是argument1
或vader
:-),或其他什么。
所发生的事情是这个函数被声明:
function(arg1){
g.children[i].onclick = function(){
alert(arg1) ;
}
}
我已将index
替换为arg1
以显示index
并非特殊,尽管它与index
一起正常工作。在声明了该函数之后,通过将其包装在parens中,然后传递参数i
((i)
),将其称为 。这将调用该函数,将当前值i
分配给函数的第一个参数,arg1
此处或原始index
。该函数声明另一个函数,这次
function() {alert(arg1);}
并将其分配给i'th
数组的g.children
元素的onclick处理程序。因此,每个onclick处理程序都将是一个只对数组元素的索引发出警报的函数。
如果你在调试器中逐步完成循环,你会看到它有效:
g.children[0].onclick = function(){ alert(0); };
g.children[1].onclick = function(){ alert(1); };
g.children[2].onclick = function(){ alert(2); };
等
答案 1 :(得分:1)
代码:
(function(index){
g.children[i].onclick = function(){
alert(index) ;
}
})(i);
是一个自动执行的函数,使用值的参数 i 调用。
简单示例:
function a(arg1) {
console.log(arg1);
}
a(10); //console.log(10);
你可以这样做:
(function (arg1) {
console.log(arg1);
})(10); //console.log(10);