gpt4 book ai didi

javascript - 变量在错误的范围内(也许需要闭包?)

转载 作者:行者123 更新时间:2023-11-28 21:15:20 25 4
gpt4 key购买 nike

我有以下需要关闭的代码:

var numItems = document.getElementsByClassName('l').length;
for (var i = 0; i < numItems; i++) {
document.getElementsByClassName('l')[i].onclick = function (e){
preview(this.href, i);
};
}

发生的情况是,每当单击某个项目时,我的预览始终相同的数字

我怀疑我需要做的是

function indexClosure(i) {
return function(e) {
preview(this.href, i);
}
}

并像这样分配 onclick:

document.getElementsByClassName('l')[i].onclick = indexClosure(i);

但是this将不再引用我的链接...这个问题如何解决?

最佳答案

使用闭包捕获循环的计数器:

var numItems = document.getElementsByClassName('l').length;
for (var i = 0; i < numItems; i++) {
(function(i){
document.getElementsByClassName('l')[i].onclick = function (e){
preview(this.href, i);
};
}(i))
}

关于javascript - 变量在错误的范围内(也许需要闭包?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com