为了账号安全,请及时绑定邮箱和手机立即绑定

为什么setInterval可以实现效果,但用setTimeout,秒数没有变?

为什么setInterval可以实现效果,但用setTimeout,秒数没有变?

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>团购——限时抢</title> <link rel="stylesheet" href="style.css"  /> </head> <body> <div class="content3"> <div class="time">还剩 <span id="LeftTime"></span></div> </div> <script> function FreshTime() {         var endtime=new Date("2017/5/15,12:20:12");//结束时间         var nowtime = new Date();//当前时间         var lefttime=parseInt((endtime.getTime()-nowtime.getTime())/1000);          d=parseInt(lefttime/(60*60*24));         h=parseInt(lefttime/(60*60)%24);         m=parseInt(lefttime/60%60);         s=parseInt(lefttime%60);                 document.getElementById("LeftTime").innerHTML=d+"天"+h+"小时"+m+"分"+s+"秒";         if(lefttime<=0){         document.getElementById("LeftTime").innerHTML="团购已结束";         clearInterval(sh);         } }    FreshTime()    var sh;    //sh=setInterval(FreshTime,500);    sh=setTimeout(FreshTime,500); </script> </body> </html>
查看完整描述

3 回答

已采纳
?
西兰花伟大炮

TA贡献376条经验 获得超318个赞

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>团购——限时抢</title>
<link rel="stylesheet" href="style.css"  />
</head>
 
<body>
<div class="content3">
<div class="time">还剩 <span id="LeftTime"></span></div>
</div>
<script>
function FreshTime()
{
        var endtime=new Date("2017/5/15,12:20:12");//结束时间
        var nowtime = new Date();//当前时间
        var lefttime=parseInt((endtime.getTime()-nowtime.getTime())/1000); 
        d=parseInt(lefttime/(60*60*24));
        h=parseInt(lefttime/(60*60)%24);
        m=parseInt(lefttime/60%60);
        s=parseInt(lefttime%60);
        
        document.getElementById("LeftTime").innerHTML=d+"天"+h+"小时"+m+"分"+s+"秒";
        if(lefttime<=0){
        document.getElementById("LeftTime").innerHTML="团购已结束";
        clearTimeout(sh);
        }else{
            setTimeout(FreshTime,500);
        }
}
   FreshTime()
   var sh;
   
   sh=setTimeout(FreshTime,500);
</script>
</body>
</html>

其实原理是一样的,多一个else判断,欢迎采纳

查看完整回答
1 反对 回复 2017-03-29
?
西兰花伟大炮

TA贡献376条经验 获得超318个赞

因为setTimeout是在500毫秒后只调用一次回调函数,一般需要递归来达到setInterval的效果

查看完整回答
1 反对 回复 2017-03-28
  • 3 回答
  • 0 关注
  • 1512 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信