以下代碼是生成公告板列表。它適用於查看內容(例如,postId0,postId1,...),但工作就像'我'是nPostsJavaScript中循環的奇怪行爲
我記得在C#中我有同樣的問題,並通過聲明我的副本copy_i = i;在循環中),但是在這裏也沒有工作。
function loadList() {
$.getJSON("list.php", function (json) {
var nPosts = json.length;
for (var i = 0; i < nPosts; i++) {
var post = $('<ol/>', {
class: "viewPost",
id: "post" + i
}).appendTo("#viewList");
$('<li/>', {
class: "viewPostId",
id: "postId" + i,
text: json[i].noteId
}).appendTo("#post" + i);
var memo = $('<li/>', {
class: "viewMemo",
id: "memo" + i,
text: json[i].noteContent
}).appendTo("#post" + i);
//alerts 'nPosts' for every i.
memo.on("click", function() { alert(i); });
}
});
}
我通過讀碼了,但作爲一個初步的問題:你熟悉的概念關閉(以及計數器變量如何也可以關閉)?通常關於循環中的奇怪行爲的問題來自忽略閉包。 –