我想解决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