首页 > 解决方案 > 循环遍历 JS 数组,然后永久以单个值结束

问题描述

我正在尝试在网站的 DIV 中打印不同的句子。我通过遍历数组(wordCycle)来做到这一点。遍历数组后,我想要Umdenken。永久显示。但相反,它遍历数组,然后输出Umdenken。然后undefined永久显示。

这是我的代码:

var wordCycle = [
    'Panierte Schuhsohlen',
    'Essbare Sitzbezüge', 
    'Häuser wie Bäume',
    'Städte wie Wälder',
    'Ein neues Bio', 
    'Masken als Nährstoffe'
];

textSequence(0);
function textSequence(i) {

    if (wordCycle.length > i) {
        setInterval(function () {
            document.getElementById("sequence").innerHTML = wordCycle[i];
            textSequence(++i);
        }, 5500); // in milliseconds (1000 = 1 second)

    } 
    else if (wordCycle.length == i) {
        document.getElementById("sequence").innerHTML = 'Umdenken.';
    }
}

标签: javascriptarraysloopssequenceinnerhtml

解决方案


用于setTimeout安排单个递归调用,而不是setInterval

var wordCycle = [
    'Panierte Schuhsohlen',
    'Essbare Sitzbezüge', 
    'Häuser wie Bäume',
    'Städte wie Wälder',
    'Ein neues Bio', 
    'Masken als Nährstoffe'
];

textSequence(0);
function textSequence(i) {

    if (wordCycle.length > i) {
        setTimeout(function () {
            document.getElementById("sequence").innerHTML = wordCycle[i];
            textSequence(++i);
        }, 500); // in milliseconds (1000 = 1 second)

    } 
    else if (wordCycle.length == i) {
        document.getElementById("sequence").innerHTML = 'Umdenken.';
    }
}
<div id="sequence"></div>


推荐阅读