2012年6月6日星期三

倒计时javascript实现

倒计时javascript实现

代码如下:

 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>

TAG: