倒计时函数(单个和多条)

1、单个的时候

//倒计时
function countTime(endtime) {
var countDown = ''
//获取当前时间
var date = new Date();
var now = date.getTime();
//设置截止时间
var endDate = new Date(endtime);
endDate = endDate.getFullYear() > 0 ? endDate : new Date(Date.parse(endtime.replace(/-/g, "/")));
//var endDate = new Date(time);
var end = endDate.getTime();

//时间差
var leftTime = end - now;
//定义变量 d,h,m,s保存倒计时的时间
var d, h, m, s;
if (leftTime >= 0) {
d = Math.floor(leftTime / 1000 / 60 / 60 / 24);
d = addZero(d);
h = Math.floor(leftTime / 1000 / 60 / 60 % 24);
h = addZero(h);
m = Math.floor(leftTime / 1000 / 60 % 60);
m = addZero(m);
s = Math.floor(leftTime / 1000 % 60);
s = addZero(s);
//setTimeout(countTime,1000);
//d<1?(countDown=h+':'+m+':'+s):(countDown=d+':'+h+':'+m+':'+s);
countDown = d + ':' + h + ':' + m + ':' + s;
} else {
//结束时
countDown = '00:00:00:00';


}
return countDown;
};

//补零
function addZero(str) {
if (str.toString()
.length < 2) {
str = '0' + str;
}
return str;
};


调用:
getCountDown() {
var that = this;
that.countDown = countTime(EndTime);
var singalTime = setInterval(function () {
that.countDown = countTime(EndTime)
}, 1000);
if(that.countDown=='00:00:00:00'){
clearInterval(singalTime)
}
},

2、多条列表同时倒计时

var Alarm = function (endtime, countFunc, endFunc) {
var date = new Date();
var startime = date.getTime();
var endDate = new Date(endtime);
endDate = endDate.getFullYear() > 0 ? endDate : new Date(Date.parse(endtime.replace(/-/g, "/")));
endtime = endDate.getTime();
this.time = Math.floor((endtime - startime) / 1000); //时间
this.countFunc = countFunc; //计时函数
this.endFunc = endFunc; //结束函数
this.flag = 't' + Date.parse(new Date());
};
Alarm.prototype.start = function () {
var self = this;
self.flag = setInterval(function () {
if (self.time < 0) {
clearInterval(self.flag);
self.endFunc();
endTimeTimedTask();
Reload();
} else {
var minute, hour, day, second;
day = Math.floor(self.time / 60 / 60 / 24) < 10 ? '0' + Math.floor(self.time / 60 / 60 / 24) : Math.floor(self.time / 60 / 60 / 24);
hour = Math.floor(self.time / 60 / 60 % 24) < 10 ? '0' + Math.floor(self.time / 60 / 60 % 24) : Math.floor(self.time / 60 / 60 % 24);
minute = Math.floor(self.time / 60 % 60) < 10 ? '0' + Math.floor(self.time / 60 % 60) : Math.floor(self.time / 60 % 60);
second = Math.floor(self.time % 60) < 10 ? '0' + Math.floor(self.time % 60) : Math.floor(self.time % 60);

//倒计时执行函数
self.countFunc(second, minute, hour, day);
self.time--;
}
}, 1000);
}

调用:
for (var i = 0; i < list.length; i++) {
list[i].showTime = countTime(list[i].endTime);
(function (ele) {
alarm = new Alarm(ele.endTime, function (second, minute, hour, day) { //计时钟
var timeStr = day + ':' + hour + ':' + minute + ':' + second;
ele.showTime = timeStr;
}, function () { //倒计时结束
ele.showTime = '00:00:00:00'
});
alarm.start();
})(list[i]);
that.resultList.push(list[i]);

}

猜你喜欢

转载自www.cnblogs.com/lmxxlm-123/p/8881773.html
今日推荐