gpt4 book ai didi

javascript - 函数接收值未定义

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:42 26 4
gpt4 key购买 nike

我有一个超时调用函数,直到 100% 进度完成。然后它执行我分配给它的功能。只有赋予它的值是未定义的或至少是其中的一部分。

我不确定代码在哪个阶段丢失了传递的值,从而使其返回 undefined 但我已经用它制作了一个 JS Fiddle 供您查看:

JS Fiddle

我的最终结果是收到正确的值,然后像这样删除给定的元素:

function rmv_div(div_id) {
//div_id is not properly defined so cannot find the div.
document.getElementById('result').innerHTML = div_id;
var div = document.getElementById(div_id);
div.parentNode.removeChild(div);
}

最佳答案

问题在于 func 中使用的变量 i 是在该函数范围之外创建的,并且在每次迭代时都会增加。然后,当你最后调用func时,i等于array.length,所以array[i]是未定义。

您可以解决它,在每次迭代时创建另一个您不会增加的变量:

解决方案 1:

演示: http://jsfiddle.net/qJ42h/4/ http://jsfiddle.net/qJ42h/11/

for (var i = 0; i < array.length; i++) {
var bar = document.getElementById('bar' + array[i]),
text = document.getElementById('text' + array[i]),
remove = 'wrap' + array[i],
j = i;
do_something(bar, text, function () {
rmv_div('id' + array[j]);
}, 1);

}

方案二

演示: http://jsfiddle.net/qJ42h/8/ http://jsfiddle.net/qJ42h/12/

for (var i = 0; i < array.length; i++) {
var bar = document.getElementById('bar' + array[i]),
text = document.getElementById('text' + array[i]),
remove = 'wrap' + array[i];
do_something(bar, text, (function(i) {
return function(){ rmv_div('id' + array[i]); }
})(i), 1);
}

关于javascript - 函数接收值未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847330/

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