javascript - 关于Js记时器的一个小问题
阿神
阿神 2017-04-11 11:07:38
[JavaScript讨论组]

想实现“新年倒记时还有5秒钟”效果,试了几种方法,主要问题在于for循环和while循环。使用方法一时能正常实现,但用方法二和方法三时就会出现从5秒直接跳到0秒(while循环),或者从5秒直接到2秒(for循环),请大牛帮忙解释下原理。

方法一:

 var n = 5;
        window.onload = function () {
            //设置定时器,重复执行函数countDown()
            var t = setInterval("countDown()", 1000);
        }
        //定义函数
        function countDown() {
            //判断n是否大于0,因为倒计时不可能有负数
            if (n > 0){
                n--;
                document.getElementById("num").innerHTML = n;
            }
        }
    


    

新年倒计时:5

方法二:

        window.onload = function () {
            //设置定时器,重复执行函数countDown()
            var t = setInterval("countDown()", 1000);
        }
        //定义函数
        function countDown() {
            for(n=5; n>0;n--){
                document.getElementById("num").innerHTML = n;
            }
        }
    


    

新年倒计时:5

方法三:

var n = 5;
        window.onload = function () {
            //设置定时器,重复执行函数countDown()
            var t = setInterval("countDown()", 1000);
        }
        //定义函数
        function countDown() {
            //判断n是否大于0,因为倒计时不可能有负数
            while (n > 0){
                n--;
                document.getElementById("num").innerHTML = n;
            }
        }
    


    

新年倒计时:5

阿神
阿神

闭关修行中......

全部回复(6)
迷茫

一秒钟之后执行了countDown(),然后里面的for循环就迅速执行完了,n就等于0了

迷茫

讲真,没啥解释的,谁让你用循环呢

迷茫

莫非你以为用了setInterval之后,你的for循环就变成一秒执行一次了?

天蓬老师

for/while循环都执行完了,setInterval有什么用?

ringa_lee
function foo(str){
  for(var i = 10;i>0;i--){
    console.log(str,i);
  }
}
foo('foo():');
var times = 0;
var timer = setInterval(function(){
  times++;
  foo(times+'次:');
}, 1000);
PHP中文网

这个为什么用循环呀,老老实实的用第一种方法得了呗

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号