【发布时间】:2020-01-03 01:18:50
【问题描述】:
尝试设置一个 HTML 类的 innerHTML,它们是四个框,每个框依次设置 3 秒。当 innerHTML 设置为加载图标时,我可以在没有 setTimeout 的情况下设置 innerHTML。当将 innerHTML 放入 setTimeout 时,将返回以下内容:'Uncaught TypeError: Cannot set property 'innerHTML' of undefined'。
尝试调试我的代码,将消息发送到控制台并搜索 stackoverflow,但没有成功。
var x = document.getElementsByClassName("numberBox");
for (var i = 0; i < 4; i++) {
x[i].innerHTML= '';
x[i].innerHTML= "<div class='loader'></div>"
}
// function to generate array of 4 random numbers
var randomNums = generateRandomNumbers();
for (var i = 0; i < 4; i++) {
setTimeout(function () {
x[i].innerHTML= '';
x[i].innerHTML = randomNums[i];
}, 3000 * i);
}
想知道为什么我的 innerHTML 不能在此处设置在 setTimeout 内以及我的问题的可能解决方案。
【问题讨论】:
-
理解 adr5240 指出的闭包和 setTimeout
-
这些答案的简短版本是
var很糟糕而且很糟糕,您应该始终改用let
标签: javascript settimeout typeerror innerhtml