Javascript 如何使用setInterval或setTimeout并在计数期间显示结果?

Javascript 如何使用setInterval或setTimeout并在计数期间显示结果?,javascript,Javascript,我试图在调用函数之前将计时器从5秒倒计时到零,我可以成功地做到这一点,但我还无法在计时器倒计时时显示计时器值。没有显示值,而是从空白变为“数字:0”。我同时使用了setTimeout和setInterval,结果相同 <script type="text/javascript"> for (i = 5; i > 0; i--) { function countDown() { setInterval(function () {

我试图在调用函数之前将计时器从5秒倒计时到零,我可以成功地做到这一点,但我还无法在计时器倒计时时显示计时器值。
没有显示值,而是从空白变为“数字:0”。我同时使用了
setTimeout
setInterval
,结果相同

<script type="text/javascript">
    for (i = 5; i > 0; i--) {
        function countDown() {
            setInterval(function () {
                document.getElementById("displayDiv").innerHTML = "Number: " + i;
            }, 1000);
        }
    }
</script>
这看起来应该很简单,但这让我很困惑。非常感谢您的帮助

请尝试

<script type="text/javascript">
function countDown() {
var i = 5;
var myinterval = setInterval(function() {
    document.getElementById("displayDiv").innerHTML = "Number: " + i;

    if (i === 0) {
        clearInterval(myInterval);
        //call your function
    }
    else {
        i--;
       }
    }, 1000);
}​
</script>

函数倒计时(){
var i=5;
var myinterval=setInterval(函数(){
document.getElementById(“displayDiv”).innerHTML=“编号:”+i;
如果(i==0){
clearInterval(myInterval);
//调用你的函数
}
否则{
我--;
}
}, 1000);
}​


DEMO:(包括额外的回调参数)

您的尝试失败了,因为您没有调用函数,您只是执行代码创建了一个命名函数表达式5次,但从未调用过。我不敢相信我没有看到这一点。谢谢你的解释@罗伯-看起来好多了,变了。谢谢你。它看起来更干净,也谢谢你的参考!谢谢如果你认为我的答案确实帮助了你,你可以按下绿色的复选标记来接受这个答案@JonDoeCA-它被称为
a | | b()
只是表示
,如果a为false,则执行b()
。在
i--| | clearInterval(int)
中,当
i--
0(0为false)
时,执行
clearInterval(int)
。最适合像我这样懒惰的人!(一年前我问过这个问题:
;)
<script type="text/javascript">
function countDown() {
var i = 5;
var myinterval = setInterval(function() {
    document.getElementById("displayDiv").innerHTML = "Number: " + i;

    if (i === 0) {
        clearInterval(myInterval);
        //call your function
    }
    else {
        i--;
       }
    }, 1000);
}​
</script>
function countDown(i) {
    var int = setInterval(function () {
        document.getElementById("displayDiv").innerHTML = "Number: " + i;
        i-- || clearInterval(int);  //if i is 0, then stop the interval
    }, 1000);
}
countDown(5);