倒计时javascript实现

来源:岁月联盟 编辑:exp 时间:2012-06-07

代码如下:


 1 /**
 2  * 倒计时
 3  *
 4  * @author WadeYu
 5  * @date 2012-04-20 17:40
 6  * @copyright boyaa.com
 7  */
 8 var TimeCountDown = function( initTime ){
 9     var day = 0;
10     var hour = 0;
11     var minute = 0;
12     var second = 0;
13     var timerId = 0;
14     var self = this;
15     var fixInitTime = function(){
16         initTime = parseInt(initTime);
17         if ( isNaN(initTime) || initTime < 0 ){
18             initTime = 0;
19         }
20     };
21     var fixZero = function(num){
22         return num < 10 ? ('0'+num) : num;
23     };
24     var calc = function(){
25         showCallback.call(self, [fixZero(day), fixZero(hour), fixZero(minute), fixZero(second)]);
26         if ( day === 0 && hour === 0 && minute === 0 && second === 0){
27             self.stop();
28         } else {
29             if (hour === 0 && day > 0){
30                 hour = 24;
31                 day--;
32             }
33             if (minute === 0 && hour > 0){
34                 minute = 60;
35                 hour--;
36             }
37             if (second === 0 && minute > 0){
38                 second = 59;
39                 minute--;
40             } else {
41                 second--;
42             }
43             timerId = window.setTimeout(function(){
44                 calc();
45             }, 1000);
46         }
47     };
48     var showCallback = function(){
49         alert('Please set show callback functions!');
50     };
51     var init = function(){
52         fixInitTime();
53         if ( initTime > 0 ){
54             day = Math.floor( (initTime / (24*60*60)) );
55             initTime -= day * 24*60*60;
56             hour = Math.floor( initTime / (60*60) );
57             initTime -= hour * 60*60;
58             minute = Math.floor( initTime / 60 );
59             second = initTime - minute * 60;
60         }
61     };
62     this.start = function(){
63         calc();
64     };
65     this.stop = function(){
66         timerId && window.clearTimeout(timerId);
67     };
68     this.setShowCallback = function(fn){
69         typeof(fn) === 'function' ? (showCallback = fn) : '';
70     };
71     init();
72 };
示例如下:


 <body>
   <div id="timeCon"></div>
   <script type="text/javascript">
       var timeCountDown = new TimeCountDown(3 * 24 * 60 * 60);
           timeCountDown.setShowCallback(function( obj ){ // [天, 小时, 分, 秒]
               document.getElementById('timeCon').innerHTML = obj[0] + ":" + obj[1] + ":" + obj[2] + ':' + obj[3];
           });
           timeCountDown.start();
   </script>
 </body>

 

 

摘自 huan & ping