Javascript 根据设置的小时数重置倒计时

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

如何使计时器更动态地重置。我现在有一个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);
函数计时器(){
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函数中的一行。在这个函数中,您可以自定义希望它的行为方式。希望这有帮助。