用Javascript逐个显示元素并根据长度站立一段时间

时间:2013-05-02 10:19:43

标签: javascript javascript-events

我正在尝试使用Javascript显示一些文本,但只有几秒钟,具体取决于字符串的长度。我根据帖子How to limit the number of iterations done by setInterval的答案创建了一个非常简单的例子。但在我的情况下不起作用:

<script>
var iterations = 0,
    data = ['a','bbbbbbbb','c'],
    interval = setInterval(foo, 4000);

function foo() {
    console.log(data[iterations]);
    iterations++;
    if (iterations >= 4){
        clearInterval(interval);
    }else if(iterations == 1){
        //we want to make time longer in this iteration.
        clearInterval(interval);
        var interval = setInterval(foo, 8000);
    }
}
</script>

我想在4秒后输出'a',8后输出'bbbbbbbb',再输4后输出'c'。

你可以看到我有一个包含3个元素的数组。对于迭代1,它应该等待更多时间但不会。对于所有情况,等待4秒,我们有一个无限循环。

我已经检查过其他函数,例如break不能与setInterval函数一起使用。

它是否是一个不基于for循环的更智能的解决方案?非常感谢。

1 个答案:

答案 0 :(得分:1)

您将区间重新声明为'foo'中的局部变量。

从以下位置更改此代码块:

else if(iterations == 1){
    //we want to make time longer in this iteration.
    clearInterval(interval);
    var interval = setInterval(foo, 8000);
}

这个(没有'var'关键字):

else if(iterations == 1){
    //we want to make time longer in this iteration.
    clearInterval(interval);
    interval = setInterval(foo, 8000);
}