我构建了这种代码
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还是我错了?
答案 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
并没有真正获得任何收益。 setTimeout
和window
都是全局变量,它们的解析方式相同。 window.setTimeout
只是意味着JavaScript引擎首先必须解析window
变量(通过最终在全局对象上找到它来完成此操作),然后在全局对象上查找setTimeout
。而setTimeout
仅执行第一部分,而无需第二部分。但是,如果您偏爱样式,当然可以了;如此少量的额外工作不会影响此代码。 :-)