好的,这是一个问题脚本.
var links = [ 'one', 'two', 'three' ];
for( var i = 0; i < links.length; i++ ) {
var a = document.createElement( 'div' );
a.innerHTML = links[i];
a.onclick = function() { alert( i ) }
document.body.appendChild( a );
}
Run Code Online (Sandbox Code Playgroud)
该脚本使用数组生成三个div:一个,两个和三个.
我在每个div上设置了一个(简称为Dom0)点击处理程序,它会提醒它在数组中的位置索引. - 除了没有!它始终警告3,即阵列的最后一个索引.
这是因为'alert(i)'中的'i'是对外部作用域的实时引用(在本例中为global),并且在循环结束时它的值为3.它需要的是一种在循环中取消引用i的方法.
这是一个解决方案,我倾向于使用它.
var links = [ 'one', 'two', 'three' ];
for( var i = 0; i < links.length; i++ ) {
var a = document.createElement( 'div' );
a.innerHTML = links[i];
a.i = i; //set a …Run Code Online (Sandbox Code Playgroud)