Javascript 根据设置的小时数重置倒计时
如何使计时器更动态地重置。我现在有一个12小时的倒计时,基于实时与新日期()。例如,如果我想让计时器每2小时重置一次,我需要更多的If和else If语句来进行计算 在不写20条if语句的情况下循环这个计时器的正确方法是什么? 目前,如果时间是00:00到11:59,它将从12小时倒计时。当它变成12:01时,我调用一个不同的等式,其中23减去当前小时,以确定新的倒计时小时 如果我要做一个倒计时,每4或2小时重置一次,而不是每12小时重置一次,那么我需要创建更多的If语句,而我不希望这样做Javascript 根据设置的小时数重置倒计时,javascript,time,timer,Javascript,Time,Timer,如何使计时器更动态地重置。我现在有一个12小时的倒计时,基于实时与新日期()。例如,如果我想让计时器每2小时重置一次,我需要更多的If和else If语句来进行计算 在不写20条if语句的情况下循环这个计时器的正确方法是什么? 目前,如果时间是00:00到11:59,它将从12小时倒计时。当它变成12:01时,我调用一个不同的等式,其中23减去当前小时,以确定新的倒计时小时 如果我要做一个倒计时,每4或2小时重置一次,而不是每12小时重置一次,那么我需要创建更多的If语句,而我不希望这样做 fu
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);
函数计时器(){
var currentTime=新日期()
var hours=currentTime.getHours()
var minutes=currentTime.getMinutes()
var seconds=currentTime.getSeconds()
如果(小时<12){
var hoursLeft=11小时;
var minsLeft=60分钟;
var secsLeft=60秒;
如果(分钟左==60){
最小左=0;
hoursLeft++;
}
如果(secsLeft==60){
secsLeft=0;
minsLeft++;
}
}否则,如果(小时数>=12){
var hoursLeft=23小时;
var minsLeft=60分钟;
var secsLeft=60秒;
如果(分钟左==60){
最小左=0;
hoursLeft++;
}
如果(secsLeft==60){
secsLeft=0;
minsLeft++;
}
}
}
var countdownTimer=setInterval('timer()',1000);
这可能会有所帮助。我创建了另一个计时器,它清除第一个计时器,然后重新启动原始计时器功能。我不清楚这是否正是你想要的用途,但它应该让你朝着正确的方向前进。如果希望重置到某个时间,可以在启动计时器()之前在timerUpdate函数中更改该时间
函数计时器(){
var currentTime=新日期()
var hours=currentTime.getHours()
var minutes=currentTime.getMinutes()
var seconds=currentTime.getSeconds()
如果(小时<2){
var hoursLeft=1小时;
var minsLeft=60分钟;
var secsLeft=60秒;
如果(分钟左==60){
最小左=0;
hoursLeft++;
}
如果(secsLeft==60){
secsLeft=0;
minsLeft++;
}
}否则,如果(小时数>=2){
var hoursLeft=2+1-小时;
var minsLeft=60分钟;
var secsLeft=60秒;
如果(分钟左==60){
最小左=0;
hoursLeft++;
}
如果(secsLeft==60){
secsLeft=0;
minsLeft++;
}
}
document.getElementById('timerUpFront').innerHTML=“
倒计时”
“+hoursLeft+“hours”+minsLeft+“minutes”+secsLeft+“seconds”;
}
var countdownTimer=setInterval('timer()',1000);
var resetTimer=setInterval(“timerUpdate()”,1000*60*4);
函数timerUpdate(){
clearTimeout(倒计时);
定时器();
}
设置的小时数为负数。我只是想创建一个简单的倒计时计时器,每X个时间量重置一次。但我想使用new Date()获取真实日期。这样,如果您在另一个浏览器中打开窗口,倒计时时间将相同。如果我不使用real time,则倒计时将始终从每个新浏览器选项卡的开始处开始。对不起,我不清楚您所说的重置是什么意思(即,您希望重置为什么)。如果要重置为某个特定的事件/时间,可以将其添加为timerUpdate函数中的一行。在这个函数中,您可以自定义希望它的行为方式。希望这有帮助。