Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我怎样才能每天重复倒计时,并且每天重复多次?_Javascript - Fatal编程技术网

Javascript 我怎样才能每天重复倒计时,并且每天重复多次?

Javascript 我怎样才能每天重复倒计时,并且每天重复多次?,javascript,Javascript,我正在尝试为下一艘驶离的飞船创建一个倒计时计时器。这艘船每天要离开好几次,我想让计数器倒计时到下一次出发的时间。当最后一次倒计时为0时,应在第二天早上的第一次重新开始 每天有6次 这是我到目前为止所做的,但似乎没有重复 (函数(){ var d1=新日期; d1.设定时间(6、20、0); var d2=新日期; d2.设定时间(9、45、0); var d3=新日期; d3.设定时间(11、30、0); var d4=新日期; d4.设定小时数(15,0,0); var d5=新日期; d5

我正在尝试为下一艘驶离的飞船创建一个倒计时计时器。这艘船每天要离开好几次,我想让计数器倒计时到下一次出发的时间。当最后一次倒计时为0时,应在第二天早上的第一次重新开始

每天有6次

这是我到目前为止所做的,但似乎没有重复

(函数(){
var d1=新日期;
d1.设定时间(6、20、0);
var d2=新日期;
d2.设定时间(9、45、0);
var d3=新日期;
d3.设定时间(11、30、0);
var d4=新日期;
d4.设定小时数(15,0,0);
var d5=新日期;
d5.设定时间(15、30、0);
var d6=新日期;
d6.设定小时数(20、15、0);
功能板(num){
返回(“0”+parseInt(num)).substr(-2);
}
函数tick(){
var now=新日期;
如果(现在>d6 | |现在<0&&现在d1&&现在d2&&现在d3&&现在d4&&现在d5&&现在

下一次出货:

当脚本启动时,为当天创建一次
d1
d2
。要使它们重复,你必须在日期改变时重新创建日期。为了简化,您可以将它们移动到
tick()
。然后,它们将每秒重新创建一次,大多数时候,日期都是相同的,但在午夜,它们会改变

我会把整件事写成:

  const times = [
    [6, 20, "green"], [9, 45, "red"], [11, 30, "green"], [15, 0, "red"], [15, 30, "green"], [20, 15, "red"]
  ]

  const timer = document.getElementById('time');


  setInterval(function tick() {
     const now = new Date();
     const nextShip = times.find(it => it[0] > now.getHours() || it[0] == now.getHours() &&  it[1] >= now.getMinutes()) || times[0];

    let hours = nextShip[0] - now.getHours();
    let minutes = nextShip[1] - now.getMinutes();

    if(minutes < 0) { minutes += 60; hours -= 1 }
    if(hours < 0) { hours += 24; }

    const seconds = 60 - now.getSeconds();

    timer.innerHTML = `${hours}:${minutes}:${seconds}`;
    timer.style.color = nextShip[2];

  }, 1000);
const时间=[
[6,20,“绿色”]、[9,45,“红色”]、[11,30,“绿色”]、[15,0,“红色”]、[15,30,“绿色”]、[20,15,“红色”]
]
常量计时器=document.getElementById('time');
setInterval(函数tick(){
const now=新日期();
const nextShip=times.find(it=>it[0]>now.getHours()| it[0]==now.getHours()&&it[1]>=now.getMinutes())|次[0];
让hours=nextShip[0]-now.getHours();
让minutes=nextShip[1]-now.getMinutes();
如果(分钟<0){minutes+=60;hours-=1}
如果(小时<0){hours+=24;}
const seconds=60-now.getSeconds();
timer.innerHTML=`${hours}:${minutes}:${seconds}`;
timer.style.color=nextShip[2];
}, 1000);

在脚本启动时,为当天创建一次
d1
d2
。要使它们重复,你必须在日期改变时重新创建日期。为了简化,您可以将它们移动到
tick()
。然后,它们将每秒重新创建一次,大多数时候,日期都是相同的,但在午夜,它们会改变

我会把整件事写成:

  const times = [
    [6, 20, "green"], [9, 45, "red"], [11, 30, "green"], [15, 0, "red"], [15, 30, "green"], [20, 15, "red"]
  ]

  const timer = document.getElementById('time');


  setInterval(function tick() {
     const now = new Date();
     const nextShip = times.find(it => it[0] > now.getHours() || it[0] == now.getHours() &&  it[1] >= now.getMinutes()) || times[0];

    let hours = nextShip[0] - now.getHours();
    let minutes = nextShip[1] - now.getMinutes();

    if(minutes < 0) { minutes += 60; hours -= 1 }
    if(hours < 0) { hours += 24; }

    const seconds = 60 - now.getSeconds();

    timer.innerHTML = `${hours}:${minutes}:${seconds}`;
    timer.style.color = nextShip[2];

  }, 1000);
const时间=[
[6,20,“绿色”]、[9,45,“红色”]、[11,30,“绿色”]、[15,0,“红色”]、[15,30,“绿色”]、[20,15,“红色”]
]
常量计时器=document.getElementById('time');
setInterval(函数tick(){
const now=新日期();
const nextShip=times.find(it=>it[0]>now.getHours()| it[0]==now.getHours()&&it[1]>=now.getMinutes())|次[0];
让hours=nextShip[0]-now.getHours();
让minutes=nextShip[1]-now.getMinutes();
如果(分钟<0){minutes+=60;hours-=1}
如果(小时<0){hours+=24;}
const seconds=60-now.getSeconds();
timer.innerHTML=`${hours}:${minutes}:${seconds}`;
timer.style.color=nextShip[2];
}, 1000);

谢谢你,乔纳斯!使用“.reverse()”计数器将以我当前的时间倒数到晚上8点15分(此时刚好过了午夜)。如果我去掉“.reverse()”它将倒计时到早上6点20分的第一次。为什么要包括它?第二天我看看柜台会发生什么。乔纳斯,还有一些事情。我不得不删除
&&it[1]>=now.getMinutes()
,因为这会导致它在某些情况下跳过数组中的项。剩下的时间是不正确的。我认为是时间的减少造成了问题。如果它计算20-50分钟,则显示为-30分钟,而不是减去1小时,并将其设置为30分钟。我不知道如何正确计算时间。哦,对了,