在javascript中检查循环内的setInterval

时间:2016-01-28 00:09:40

标签: javascript loops for-loop setinterval

我在for循环中插入setInterval时遇到问题。我希望数组中的单词在div中一次显示一个,延迟为1秒(变量)。目前,它仅在延迟1秒后显示数组的最后一个字。

var words = input.split(/[ \t\n]+/);
var temp = 0;
for(var i=0; i<words.length ;i++) {
    setInterval(function() {document.getElementById("display").innerHTML = words[temp];
        temp++;},1000);
    document.getElementById("display").innerHTML = "";}

1 个答案:

答案 0 :(得分:0)

您将间隔设置为words.length次,所有这些都在循环运行后的1秒标记处。结果:所有单词在同一帧中一个接一个地显示,只留下最后一个。

我建议采用不同的方法。

var words = input.split(/\s+/); // "any whitespace"
function nextWord() {
    document.getElementById('display').innerHTML = words.shift();
    if( words.length > 0) setTimeout(nextWord,1000);
    else alert("Done!"); // you can do something else here
}
setTimeout(nextWord,1000);
// or just call nextWord() if you want the first word to appear immediately.

通过你的字符串,直到没有任何单词为止。