DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript基礎知識 >> 原生js實現節日時間倒計時功能
原生js實現節日時間倒計時功能
編輯:JavaScript基礎知識     

知識要點

1.實現原理:

用結束時間-當前時間=時間差

當前時間每過1秒時間差自然也就少了1秒

所以要1秒更新一次當前時間就達到了倒計時的效果

2.需要注意的就是時間之間的轉換和對得出數值的處理

3.用到的方法:

obj.getTime() //換算成毫秒
Math.floor() //把小數點向下捨入結果取一個整數
50%24 // 這是對數值求余的方法,意思是 假如有50個小時,一天24個小時 這個得出的結果就是 余數是2

具體的數值的運算處理完整代碼裡有詳細的注釋

完整代碼

注:代碼附帶顯示當前時間的標准格式以及倒計時天數

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>demo</title>
<style>
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6{font-size:100%;}
address,cite,dfn,em,var{font-style:normal;}
code,kbd,pre,samp{font-family:courier new,courier,monospace;}
ul,ol{list-style:none;}
a{text-decoration:none;}
a:hover{text-decoration:none;}
sup{vertical-align:text-top;}
sub{vertical-align:text-bottom;}
legend{color:#000;}
fieldset,img{border:0;}
button,input,select,textarea{font-size:100%;}
table{border-collapse:collapse;border-spacing:0;}
.clear{clear: both;float: none;height: 0;overflow: hidden;}
</style>
</head> 
<body>
 <div id="time"></div>
 <br/>
 <div id="day"></div>
 <br/>
 <div id="tm"></div>
 <script type="text/javascript"> 
 //在頁面加載完後立即執行多個函數完美方案。
 function addloadEvent(func){
  var oldonload=window.onload;
  if(typeof window.onload !="function"){
   window.onload=func;
  }
  else{
   window.onload=function(){
    if(oldonload){
     oldonload(); 
    }
    func();
   }
  }
 }
 addloadEvent(showTime);
 addloadEvent(day);
 addloadEvent(tb);
 //在頁面加載完後立即執行多個函數完美方案over。
 //天時秒分倒計時
 function tb(){
 var myDate=new Date();//獲取當前時間
 var endtime=new Date("2018,1,1");//獲取結束時間
 //換算成秒 小數點向下捨入取整
 var ltime=Math.floor((endtime.getTime()-myDate.getTime())/1000);
 //console.log(ltime)
 //換算成天 小數點向下捨入取整
 var d=Math.floor(ltime/(24*60*60));
 //換算成小時取去掉天數的余數(也就是小時) 小數點向下捨入取整
 var h=Math.floor(ltime/(60*60)%24);
 //換算成分鐘取去掉小時的余數(也就是分鐘) 小數點向下捨入取整
 var m=Math.floor(ltime/60%60);
 //換算成分鐘取去掉分鐘的余數(也就是秒) 小數點向下捨入取整
 var s=Math.floor(ltime%60);
 document.getElementById("tm").innerHTML="距2018年元旦還有:"+d+"天"+h+"小時"+m+"分鐘"+s+"秒";
 if(ltime<=0){
  document.getElementById("tm").innerHTML="元旦快樂!";
  clearTimeout(tb);
 }
 setTimeout(tb,1000);
 }
 //當秒數為個位數時前面+字符串0
 function checkTime(i){
 return i<10? "0"+i:""+i;
 }
 //當前時間標准格式
 function showTime(){
 var myDate=new Date();//獲取當前時間
 var year=myDate.getFullYear();//獲取年份
 var month=myDate.getMonth()+1;//獲取月份是0-11的數字所以+1
 var date=myDate.getDate();//日
 var day=myDate.getDay();//
 var h=myDate.getHours();//小時
 var m=myDate.getMinutes();//分鐘
 var s=myDate.getSeconds();//秒
 checkTime(m);
 checkTime(s);
 //console.log(day)
 var week="日一二三四五六".charAt(day);
 document.getElementById("time").innerHTML=year+"年"+month+"月"+date+"日"+"星期"+week+h+":"+m+":"+s;
 setTimeout(showTime,1000); 
 }
 //倒計時天數計算
 function day(){
 var myDate=new Date();//獲取當前時間
 var endtime=new Date("2018,1,1");//獲取結束時間
 //先換算成毫秒再相減就是時間差,再除以一天的毫秒數結果是帶有小數點的,用math方法進一位取整
 var ltime=Math.ceil((endtime.getTime()-myDate.getTime())/(24*60*60*1000));
 document.getElementById("day").innerHTML="距2018年元旦還有:"+ltime+"天";
 }
 </script>
</body> 
</html> 

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved