使用for循环的Javascript倒计时

使用for循环的Javascript倒计时,javascript,for-loop,Javascript,For Loop,我曾尝试使用for循环来显示我的倒计时,但我不知道哪里出错了。是否有一种更简单的方法可以使用vanilla javascript显示每行的倒计时 我的下表: var exp=document.getElementById('tab').getElementsByClassName('exp1'); var x=document.getElementById('tab').getElementsByClassName('demo'); var now=新日期(); 功能测试(){ 对于代码中的(

我曾尝试使用for循环来显示我的倒计时,但我不知道哪里出错了。是否有一种更简单的方法可以使用vanilla javascript显示每行的倒计时

我的下表:

var exp=document.getElementById('tab').getElementsByClassName('exp1');
var x=document.getElementById('tab').getElementsByClassName('demo');
var now=新日期();
功能测试(){

对于代码中的(i=0;i,没有对
test()
的第一次调用。因此,要么您忘记在问题中写入它,要么您在代码中没有它。在开始使用
setTimeout
的永久循环之前,需要有人第一次调用
test()

我添加了一段您可以运行的代码,它包含您粘贴的HTML以及JavaScript。唯一的区别是我在您的
var now
之后调用了
test()

有几件事:

  • 我将
    setTimeout
    for循环中移出,因为将它放在那里意味着您将在每次迭代中调用它,而不是每秒钟调用一次。此外,您不能将
    now
    变量作为全局值,您需要在每次计算函数内部的差异时都获取它。如果您查看e你会看到:
创建表示单个时间点的JavaScript日期实例。日期对象基于时间值,该时间值为UTC 1970年1月1日以来的毫秒数。 var date1=新日期('1995年12月17日03:24:00'); //1995年12月17日星期日03:24:00 GMT

这意味着当你创建日期时,它代表了一个时间上的单一时刻,就像你拍了一张那个时间的快照,并将它冻结在那里一样

  • 第二个问题是如何显示信息。如果有变量在for loop范围内更改,一旦退出该迭代,值将永远消失。如果只显示该信息(天、分钟、小时、天)在您的
    for循环之后,您将把最后一个值保存到这些变量中。这与您要查找的不完全一样。要解决这个问题,您只需移动
    x[i]。innerHTML=days+“days”+hours+“hours”+minutes+“minutes”+seconds
    到与计算值相同的循环
  • 作为旁注,您可以签出
    setInterval()
    ,因为这正是您想要的
var exp=document.getElementById('tab').getElementsByClassName('exp1');
var x=document.getElementById('tab').getElementsByClassName('demo');
test();
功能测试(){
var now=新日期();
对于(i=0;i

名称
费用
倒计时
A.
09/08/2019
B
09/08/2020

在您的代码中,没有对
test()
的第一次调用。因此,要么您忘记在问题中编写它,要么您在代码中没有它。在使用
setTimeout
的永久循环开始之前,需要有人第一次调用
test()

我添加了一段您可以运行的代码,它包含您粘贴的HTML以及JavaScript。唯一的区别是我在您的
var now
之后调用了
test()

有几件事:

  • 我将
    setTimeout
    for循环中移出,因为将它放在那里意味着您将在每次迭代中调用它,而不是每秒钟调用一次。此外,您不能将
    now
    变量作为全局值,您需要在每次计算函数内部的差异时都获取它。如果您查看e你会看到:
创建表示单个时间点的JavaScript日期实例。日期对象基于时间值,该时间值为UTC 1970年1月1日以来的毫秒数。 var date1=新日期('1995年12月17日03:24:00'); //1995年12月17日星期日03:24:00 GMT

这意味着当你创建日期时,它代表了一个时间上的单一时刻,就像你拍了一张那个时间的快照,并将它冻结在那里一样

  • 第二个问题是如何显示信息。如果有变量在for loop范围内更改,一旦退出该迭代,值将永远消失。如果只显示该信息(天、分钟、小时、天)在您的
    for循环之后,您将把最后一个值保存到这些变量中。这与您要查找的不完全一样。要解决这个问题,您只需移动
    x[i]。innerHTML=days+“days”+hours+“hours”+minutes+“minutes”+seconds
    到与计算值相同的循环
  • 作为旁注,您可以签出
    setInterval()
    ,因为这正是您想要的
var exp=document.getElementById('tab').getElementsByClassName('exp1');
var x=document.getElementById('tab').getElementsByClassName('demo');
test();
功能测试(){
var now=新日期();
对于(i=0;i