我试图在循环中创建一个闭包,以便用我的迭代器值设置一个事件监听器。但是,未正确设置setCookie中的值。我在这里做错了什么?
obj = document.getElementsByClassName("class");
l = obj.length;
i = 0;
function addEv() {
while (i < l) {
obj[i].addEventListener("click", listener.bind(null, i));
function listener(index) {
setCookie("item", index, 24)
}
i++;
}
}
答案 0 :(得分:-1)
更新的答案
捕获迭代值的方法是使用立即调用的函数来捕获闭包中的值。
while (i < l) {
obj[i].addEventListener("click", (function(index) {
return function(ev) {
//setCookie("item", index, 24)
console.log(index)
};
}(i)));
i++;
}
此示例将迭代i
包装为index
。