我想解決testdome上作爲公共問題發佈的這個問題。每個as[i]
應該是alert(i)
的函數。 是錯誤修正的代碼是這樣的:循環中的JavaScript關閉
function registerHandlers() {
var as = document.getElementsByTagName('a');
for (i = as.length; i-- >= 0;) {
as[i].onclick = function() {
alert(i);
return false;
}
}
}
我試圖解決的辦法是這樣的:
function registerHandlers() {
var as = document.getElementsByTagName('a');
//made the loop variables more explicit
for (i = as.length-1; i >=0; i--) {
var x = i;
as[x].onclick = function() {
alert(x);
return false;
}
}
}
我雖然該變量i
是持久的,所以我保留了其拷貝變量x,和使用變量x
而不是i
。但它並沒有完全解決問題。請讓我知道我的誤解。
如果它使用'.forEach()'而不是簡單的'for'循環進行迭代,它就可以正常工作。 – Pointy