jQuery倒數計時效果程式碼例項

antzone發表於2017-04-06

倒數計時效果在很多功能中都有使用,比如團購或者考試或者體育比賽等。

下面就是一個jQuery程式碼實現的倒數計時功能,下面就做一下分析。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
*{
  font-style:normal;
  font-weight:normal;
}
.haveday{
  padding:20px;
  border:1px dashed #000;
  margin-right auto;
  margin-left:auto;
  width:300px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
function lxfEndtime(){
  $(".lxftime").each(function(){
    var lxfday=$(this).attr("lxfday");//用來判斷是否顯示天數的變數
    var endtime = new Date($(this).attr("endtime")).getTime();
    //取結束日期(毫秒值)
    var nowtime = new Date().getTime();
    //今天的日期(毫秒值)
    var youtime = endtime-nowtime;//還有多久(毫秒值)
    var seconds = youtime/1000;
    var minutes = Math.floor(seconds/60);
    var hours = Math.floor(minutes/60);
    var days = Math.floor(hours/24);
    var CDay= days ;
    var CHour= hours % 24;
    var CMinute= minutes % 60;
    var CSecond= Math.floor(seconds%60);
    //"%"是取餘運算,可以理解為60進一後取餘數,然後只要餘數。
    if(endtime<=nowtime){
      $(this).html("已過期")
      //如果結束日期小於當前日期就提示過期啦
    }
    else{
      if($(this).attr("lxfday")=="no"){
        $(this).html("<i>剩餘時間:</i><span>"
        +CHour+"</span>時<span>"
        +CMinute+"</span>分<span>"
        +CSecond+"</span>秒");
        //輸出沒有天數的資料
      }
      else{
        $(this).html("<i>剩餘時間:</i><span>"
        +days+"</span><em>天</em><span>"
        +CHour+"</span><em>時</em><span>"
        +CMinute+"</span><em>分</em><span>"
        +CSecond+"</span><em>秒</em>");
        //輸出有天數的資料
      }
    }
  });
  setTimeout("lxfEndtime()",1000);
};
$(function(){
  lxfEndtime();
});
</script>
</head>
<body>
<div class="haveday">
  <h1>含有天數的倒數計時</h1>
  <div class="lxftime" endtime="11/15/2018 17:24:0"></div>
  <div class="lxftime" endtime="11/8/2018 3:3:20"></div>
  <div class="lxftime" endtime="9/6/2018 6:1:0"></div>
  <div class="lxftime" endtime="6/6/2018 9:3:5"></div>
</div>
<p></p>
<div class="haveday">
  <h1>沒有天數的倒數計時</h1>
  <div class="lxftime" endtime="11/15/2018 17:24:0" lxfday="no"></div>
  <div class="lxftime" endtime="11/8/2018 3:3:20" lxfday="no"></div>
  <div class="lxftime" endtime="9/6/2018 6:1:0" lxfday="no"></div>
  <div class="lxftime" endtime="6/6/2018 9:3:5" lxfday="no"></div>
</div>
</body>
</html>

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).function lxfEndtime(){},此方法實現了計算當前時間和結束時間差的功能。(2).$(".lxftime").each(function(){}),遍歷每一個class屬性值為lxftime的元素。

(3).var lxfday=$(this).attr("lxfday"),是否顯示倒數計時的天。

(4).var endtime = new Date($(this).attr("endtime")).getTime(),獲取結束時間的時間戳。

(5).var nowtime = new Date().getTime(),獲取當前時間的時間戳。

(6).var youtime = endtime-nowtime,結束時間和當前時間的時間戳差距。

(7).var seconds = youtime/1000,獲取相差的秒數。

(8).var minutes = Math.floor(seconds/60),獲取相差的分鐘數。

(9).var hours = Math.floor(minutes/60),獲取相差的小時數。

(10).var days = Math.floor(hours/24),獲取相差的天數。

(11).var CDay= days,將相差的天數賦值給變數。

(12).var CHour= hours % 24,相差的小時數。

(13).var CMinute= minutes % 60,相差的分鐘數。

(14).var CSecond= Math.floor(seconds%60),相差的秒數。

(15).if(endtime<=nowtime){

  $(this).html("已過期")

  //如果結束日期小於當前日期就提示過期啦

},如果當前時間大於結束時間,那麼就給出提示。

二.相關閱讀:

(1).each()方法可以參閱jQuery each()一章節。

(2).attr()方法可以參閱jQuery attr()一章節。

(3).getTime()方法可以參閱javascript getTime()一章節。

(4).Math.floor()方法可以參閱javascript Math.floor()一章節。

(5).setTimeout()方法可以參閱setTimeout()一章節。

相關文章