作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我构建了这种类型的代码
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);
}
}
}
可悲的是,每次 else 都是 true 并且完成时。但是 while 循环的前 4 次 zaehler
变量不大于 5 还是我错了?
最佳答案
你不需要 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
只完成第一部分,避免第二部分的需要。但如果您喜欢它的风格,当然也没关系;这段代码不会受到如此少量的额外工作的影响。 :-)
关于javascript - 不然每次都打,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53063579/
我是一名优秀的程序员,十分优秀!