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()从另一页获取一些信息。问题是...
++i
,在提取完成时,i
的值为meta.length
。因此,您正在访问meta[meta.length]
,这是undefined
。尝试function
周期的for
添加了一些AJAX调用,当应答时,将调用其回调。但是,在调用它们的回调时,由于for的原因,您的函数作用域i
已超出范围。一个非常简单的解决方法如下: