这是一个很经典的问题,很多时候我们会遇到这种情况:

for (var i = 0 ; i < list.length ; i++){
	list[i].onclick = function(){
		alert(i);
	}
}

当我们分别点击list[0],list[1],list[2]…时,弹出来的不是0,1,2……,而是一直都是list.length的值。

解决这个问题,有两种方法:

第一:利用闭包

for (var i = 0 ; i < list.length ; i++){
	(function(i){
		list[i].onclick = function(){
			alert(i);
		}
	})(i);
}

第二种:给DOM节点添加_index属性

for (var i = 0 ; i < list.length ; i++){
	list[i]._index = i;
	list[i].onclick = function(){
		alert(this._index);
	}
}
© 2012 Hedgehog Suffusion theme by Sayontan Sinha