我想在 for 循环中向 li 添加事件。
我知道什么总是出错:i
闭包可以访问的是i
. i
需要锁定在封闭中。
要解决这个问题,请使用立即调用函数表达式。
我不明白为什么这不起作用!
for (var i = 0; i < 10; i++){
var li = document.createElement('li');
ul.appendChild(li);
li.onclick = (function(i2){
return slideTo(i2); // slideTo is a global function
}(i));
但我知道这会奏效:
li.onclick = (function(i2){
return function(){
slideTo(i2); // slideTo is a global function
}
}(i));
为什么我需要放入slideTo(i)
匿名函数???
这两个表达有什么区别??
十分感谢!!!