gpt4 book ai didi

javascript - 变量保持为一个值

转载 作者:行者123 更新时间:2023-11-28 13:48:52 25 4
gpt4 key购买 nike

我有一个循环,我试图用自己的 ID 号进行点击,但它不断更新到循环中的最后一个数字 - 我想知道如何阻止它写入变量,以便他们保留自己的号码?

这就是我所拥有的:

count = 0;
for(i in my_array){
if(my_array[i][2])){ //if the data value is true
document.getElementById('div_id_'+count).onclick = function()
{
alert(i);
};
count++;
}
}

事情是alert(i)总是显示my_array的最后一个值...所以我想知道如何阻止它每次写入以便每个div都可以解析自己的值?

最佳答案

您遇到了 Closure 问题。这是一个棘手的话题。看看这个网址:http://code.google.com/apis/ajax/playground/#closure_for_events

基本上,当您单击该元素时,就会计算 i 值;不是在您分配事件时,因此此时 i 设置为循环中的最后一个值。您需要创建一个单独的函数来绑定(bind)到采用 i 参数的单击事件。一个例子:

function HandleClick(i){
return function() { alert(i); };
}

count = 0;
for(i in my_array){
if(my_array[i][2])){ //if the data value is true
document.getElementById('div_id_'+count).onclick = HandleClick(i);
count++;
}
}

现在,HandleClick 函数正在为 i 创建自己的闭包,并将其设置为从循环传入的值。

关于javascript - 变量保持为一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12207471/

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