答案 0 :(得分:5)
请参阅更新的小提琴:http://jsfiddle.net/eceGc/2/
var selectorObject = document.getElementById('selector');
for (var i = 0; i < 3; i++) {
(function(i) {
/* all code here */
}(i));
}
将循环体包装成一个闭包(一个自执行的匿名函数),将当前i
作为参数传递。
您的代码出现问题的原因是,当触发click事件时,i
的值已达到循环内的限制,因此您正在读取该值。
避免这种行为的另一种方法是通常在函数中移动循环内的所有代码,然后在循环内调用该函数(总是将i
变量作为参数传递)