javascript倒计时功能实现代码 |
本文标签:倒计时 代码如下: 复制代码 代码如下: /** * 倒计时 * * @author WadeYu * @date 2012-04-20 17:40 * @copyright boyaa.com */ var TimeCountDown = function( initTime ){ var day = 0; var hour = 0; var minute = 0; var second = 0; var timerId = 0; var self = this; var fixInitTime = function(){ initTime = parseInt(initTime); if ( isNaN(initTime) || initTime < 0 ){ initTime = 0; } }; var fixZero = function(num){ return num < 10 ? (0+num) : num; }; var calc = function(){ showCallback.call(self, [fixZero(day), fixZero(hour), fixZero(minute), fixZero(second)]); if ( day === 0 && hour === 0 && minute === 0 && second === 0){ self.stop(); } else { if (hour === 0 && day > 0){ hour = 24; day--; } if (minute === 0 && hour > 0){ minute = 60; hour--; } if (second === 0 && minute > 0){ second = 59; minute--; } else { second--; } timerId = window.setTimeout(function(){ calc(); }, 1000); } }; var showCallback = function(){ alert(Please set show callback functions!); }; var init = function(){ fixInitTime(); if ( initTime > 0 ){ day = Math.floor( (initTime / (24*60*60)) ); initTime -= day * 24*60*60; hour = Math.floor( initTime / (60*60) ); initTime -= hour * 60*60; minute = Math.floor( initTime / 60 ); second = initTime - minute * 60; } }; this.start = function(){ calc(); }; this.stop = function(){ timerId && window.clearTimeout(timerId); }; this.setShowCallback = function(fn){ typeof(fn) === function ? (showCallback = fn) : ; }; init(); }; 示例如下: 复制代码 代码如下: <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> |