每次都击中

时间:2018-10-30 11:44:12

标签: javascript

我构建了这种代码

countdown();
function countdown() {
    var zaehler = 1;
    while (zaehler <= 5) {
        document.getElementById("ueberschrift" + zaehler).style.display = "none";
        zaehler++;
        if (zaehler < 5) {
            document.getElementById("ueberschrift" + zaehler).style.display = "inline";
            window.setTimeout('countdown()', 5000);
        } else {
            document.getElementById("ueberschrift1").style.display = "inline";
            window.setTimeout('countdown()', 5000);
        }
    }
}

每当其他情况都成立并完成时,就很难过。但是while循环的前4次zaehler变量不大于5还是我错了?

1 个答案:

答案 0 :(得分:1)

您不需要while循环,而需要一系列setTimeout链接的呼叫。将zaehler变量保留在函数之外,以便其值在调用之间保持不变。

请不要将字符串传递到setTimeout中。只需传递对该函数的引用即可。并且由于这是一个倒计时,因此我假设您不想在zaehler达到5时继续前进,因此您想在setTimeout分支中删除该else

最后,因为您要继续

var zaehler = 1;
countdown();
function countdown() {
    document.getElementById("ueberschrift" + zaehler).style.display = "none";
    zaehler++;
    if (zaehler < 5) {
        document.getElementById("ueberschrift" + zaehler).style.display = "inline";
        window.setTimeout(countdown, 5000);
    } else {
        document.getElementById("ueberschrift1").style.display = "inline";
    }
}

侧面说明:使用window.setTimeout代替setTimeout并没有真正获得任何收益。 setTimeoutwindow都是全局变量,它们的解析方式相同。 window.setTimeout只是意味着JavaScript引擎首先必须解析window变量(通过最终在全局对象上找到它来完成此操作),然后在全局对象上查找setTimeout。而setTimeout仅执行第一部分,而无需第二部分。但是,如果您偏爱样式,当然可以了;如此少量的额外工作不会影响此代码。 :-)