如何使计时器更动态地重置。目前,我使用 new Date()进行实时倒计时12小时。例如,如果我想将计时器重置为2小时,那么我需要更多的if和else if语句来进行数学计算。
在不编写20条if语句的情况下循环计时器的正确方法是什么? 目前,如果时间是00:00到11:59,它将从12小时开始倒计时。当时间变为12:01时,我将调用另一个方程式,即23减去当前小时,以确定新的倒计时小时。
如果我要进行倒计时,每4或2个小时而不是每12个小时重置一次,那么我需要创建更多我不愿意做的if语句。
function timer() {
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
var seconds = currentTime.getSeconds()
if (hours < 12) {
var hoursLeft = 11 - hours;
var minsLeft = 60 - minutes;
var secsLeft = 60 - seconds;
if(minsLeft==60) {
minsLeft=0;
hoursLeft++;
}
if(secsLeft==60) {
secsLeft=0;
minsLeft++;
}
} else if (hours >= 12) {
var hoursLeft = 23 - hours;
var minsLeft = 60 - minutes;
var secsLeft = 60 - seconds;
if(minsLeft==60) {
minsLeft=0;
hoursLeft++;
}
if(secsLeft==60) {
secsLeft=0;
minsLeft++;
}
}
}
var countdownTimer = setInterval('timer()', 1000);
答案 0 :(得分:0)
这可能会有所帮助。我创建了另一个计时器,该计时器清除第一个计时器,然后重新启动原始计时器功能。我不清楚这是否是您要使用的确切用途,但它应该使您朝正确的方向前进。如果您希望重置为某个时间,可以在启动timer()之前在timerUpdate函数中进行更改。
function timer() {
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
var seconds = currentTime.getSeconds()
if (hours < 2) {
var hoursLeft = 1 - hours;
var minsLeft = 60 - minutes;
var secsLeft = 60 - seconds;
if(minsLeft==60) {
minsLeft=0;
hoursLeft++;
}
if(secsLeft==60) {
secsLeft=0;
minsLeft++;
}
} else if (hours >= 2) {
var hoursLeft = 2 + 1 - hours;
var minsLeft = 60 - minutes;
var secsLeft = 60 - seconds;
if(minsLeft==60) {
minsLeft=0;
hoursLeft++;
}
if(secsLeft==60) {
secsLeft=0;
minsLeft++;
}
}
document.getElementById('timerUpFront').innerHTML= "<br><strong>countdown</strong><br>"+ hoursLeft + " hours " + minsLeft + " minutes " + secsLeft + " seconds";
}
var countdownTimer = setInterval('timer()', 1000);
var resetTimer = setInterval("timerUpdate()", 1000*60*4);
function timerUpdate(){
clearTimeout(countdownTimer);
timer();
}