我一直在尝试为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 );
}
Run Code Online (Sandbox Code Playgroud)
所有四个链接的警报值始终为"4".很明显.谷歌搜索时,我遇到了一个显示以下代码片段的帖子:
a.onclick = (function(p, d) {
return function(){ show_photo(p, d) }
})(path, description);
Run Code Online (Sandbox Code Playgroud)
我设法根据我的需要调整它并获得警报(i)正常工作的事情,但如果有人能够准确解释上述代码的作用,我将不胜感激.
javascript closures loops anonymous-function javascript-events