我有代码段:
var i = 0;
(function loop() {
text_objects[i].displayText();
if (++i < text_objects.length) {
setTimeout(loop, 3000);
}
})();
它应该一次显示一个数组的内容,间隔3秒。但是,当我运行程序时,我只得到第一个项目,而它只是冻结在那里,而没有更新和显示数组中的其余项目。
我究竟做错了什么?
最佳答案
正如@nnnnnn正确提到的,
loop()是一个命名函数表达式,引用循环应在函数范围内
您的代码也可以正常工作。
var i = 0;
var test = function(value){
this.text = value;
}
test.prototype.displayText = function(){
document.write(this.text + "<br/>");
}
var text_objects = [];
for (var j = 0; j<10; j++){ text_objects.push(new test(j)); }
(function loop() {
text_objects[i].displayText();
if (++i < text_objects.length) {
setTimeout(loop, 3000);
}
})();
替代方法:
var i = 0;
function loop() {
document.write(i + "<br/>")
if (++i < 5) {
setTimeout(loop, 3000);
}
}
loop();
关于javascript - JavaScript:一次3秒后显示阵列项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35715620/