无法设置fetch()之外的变量的innerHTML >> [

问题描述 投票:0回答:2
我正在使用querySelectorAll遍历for()匹配,并且当前匹配称为

meta [i]

。在for()函数内部,我正在使用fetch()从另一页获取一些信息。问题是,显然,我无法在fetch()函数中设置meta [i]innerHTML。这是我的代码:function variations() { var meta = item.querySelectorAll('.meta_items tr td:nth-child(1)'), i; var id = 1; for (i = 0; i < meta.length; ++i) { meta[i].querySelector('input').setAttribute('type', 'hidden'); meta[i].querySelector('input').value = id; fetch('../public/orders.php?id=' + id).then((resp) => resp.text()).then(function(data) { meta[i].innerHTML = data; }); } }
这是我得到的错误:

未捕获(承诺)TypeError:无法设置undefinedat test.js的属性'innerHTML':8

我正在使用for()遍历querySelectorAll匹配项,当前匹配项称为meta [i]。在for()函数内部,我正在使用fetch()从另一页获取一些信息。问题是...

javascript ajax
2个回答
0
投票
[我认为,由于++i,在提取完成时,i的值为meta.length。因此,您正在访问meta[meta.length],这是undefined。尝试

0
投票
您的具有function周期的for添加了一些AJAX调用,当应答时,将调用其回调。但是,在调用它们的回调时,由于for的原因,您的函数作用域i已超出范围。一个非常简单的解决方法如下:
© www.soinside.com 2019 - 2024. All rights reserved.