【发布时间】:2010-12-05 21:26:47
【问题描述】:
我一直在尝试将函数分配给 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”。很明显。谷歌搜索时,我发现了一个显示以下代码 sn-p 的帖子:
a.onclick = (function(p, d) {
return function(){ show_photo(p, d) }
})(path, description);
我设法根据自己的需要对其进行了调整,并让 alert(i) 正常工作,但如果有人能准确解释上述代码的作用,我将不胜感激。
【问题讨论】:
-
嗨,你能告诉我为什么它会提示“4”吗?不应该是“2”吗?谢谢。
-
for (var i = 0; i
-
我的错...循环应该在 i = 0 到 3 时运行,所以它要么是 "i
标签: javascript loops closures dom-events anonymous-function