我一直在尝试为JavaScript中的动态创建的“a”标签的onclick事件分配一个函数。所有标签均按以下方式创建:循环中的函数(返回另一个函数)是如何工作的?
for (var i = 0; i < 4; i++)
{
var a = document.createElement("a");
a.onclick = function() { alert(i) };
document.getElementById("foo").appendChild(a);
}
所有四个链接的警报值始终为“4”。很明显。谷歌搜索时,我遇到了一个帖子,显示下面的代码片段:
a.onclick = (function(p, d) {
return function(){ show_photo(p, d) }
})(path, description);
我设法调整它为我的需求,并得到了警报(我)的东西才能正常工作,但我会很感激,如果有人可以解释不清楚上面的代码做了什么。
嗨,你能告诉我,为什么它警报“4”?它不应该是“2”吗?谢谢。 – Tarik 2009-10-12 06:39:11
for(var i = 0; i <3; i ++)在结尾处留下i == 4 – 2009-10-12 07:49:56
不,它离开我为3 – 2009-10-12 08:26:50