jQuery倒计时效果代码实例
倒计时效果在很多功能中都有使用,比如团购或者考试或者体育比赛等。
下面就是一个jQuery代码实现的倒计时功能,下面就做一下分析。
代码实例如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.pipipi.net/" /> <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()一章节。