/**
* 倒计时处理类
* @author alex
*/
var countDown = function(userSetting) {
this.setting = {
time_remaining: 0,
count: function(formatTime) {
return;
},
after: function() {
return;
},
countStatus: null
};
var _setting = $.extend(this.setting, userSetting);
this.bind = function(object, func) {
return function() {
return func.apply(object, arguments);
}
};
var self = this;
this.default_time = _setting.time_remaining;
this.lock = false;
this.start = function() {
if (self.lock == true)
return;
else
self.progress();
};
this.end = function(){
self.lock = false;
clearTimeout(_setting.countStatus);
_setting.after();
_setting.time_remaining = self.default_time;
}
this.progress = function() {
var formatTime = format(_setting.time_remaining);
_setting.count(formatTime);
if (_setting.time_remaining == 0) {
self.lock = false;
clearTimeout(_setting.countStatus);
_setting.after();
_setting.time_remaining = self.default_time;
} else {
self.lock = true;
_setting.time_remaining -= 1;
_setting.countStatus = setTimeout(function() {
self.progress();
}, 1000);
}
};
function format(second) {
var days = 0;
var hours = 0;
var minutes = 0;
var seconds = 0;
days = Math.floor(second / (24 * 60 * 60));
second -= days * 24 * 60 * 60;
hours = Math.floor(second / (60 * 60));
second -= hours * 60 * 60;
minutes = Math.floor(second / (60));
second -= minutes * 60;
seconds = second;
return {
day: days,
hour: hours,
minute: minutes,
second: seconds
};
}
};
// 应用
var app_time = new countDown({
time_remaining:59,// 设置倒计时时间
count:function(data){
// 每一秒倒计时执行的操作
},
after:function(){
// 倒计时完毕执行的操作,即为结束回调函数
}
});
var app_time_start = app_time.start;
var app_time_end = app_time.end;
app_time_start();// 开始倒计时
app_time_end();// 强制结束倒计时
JS倒计时类
最新推荐文章于 2024-04-28 17:03:19 发布