我一直在嘗試爲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