猿问

为什么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>


qq_果汁分ni半_03462240
浏览 1510回答 3
3回答

西兰花伟大炮

<!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判断,欢迎采纳

西兰花伟大炮

因为setTimeout是在500毫秒后只调用一次回调函数,一般需要递归来达到setInterval的效果
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答