比如頁面上有一個ul,數個li,現在給li添加點擊事件。
var li = document.getElementsByTagName("li");
for(var i = 0; i < li.length; i++) {
li[i].addEventListener("click",function () {
console.log(i);
})
}
但是,這樣寫之后我們發現,點擊任何一個li,打印的值都為5,這是因為閉包中共用i值,而i的值由於執行for循環,都變為了5
為了正常顯示i值,我們可以使用如下方法:
for (var i = 0; i < lis.length; i++) {
(function(arg){
li[arg].onclick = function(){
console.log(arg);
};
})(i)
}
類似於這樣
var li = document.getElementsByTagName("li");
for(var i = 0; i < li.length; i++) {
getConsole(i);
}
function getConsole(i){
li[i].addEventListener("click", function() {
console.log(i);
});
}
