我试图做的JavaScript一个非常基本的日期差计算,但我从的setInterval()获得混合行为。

这会经常更新:

var init = setInterval(function(){
  document.getElementById("txt").innerHTML = new Date();
}, 1000);

但是,这仅更新一次:

var init = setInterval(function(){
  var today = new Date();
  var started = new Date(); started.setYear(1983);
  var difference = today - started;
  document.getElementById("txt").innerHTML = difference;
}, 1000);

我不明白这一点。如果我能显示日期每一秒,我为什么不能显示日期的差别每一秒?

有帮助吗?

解决方案

您正在today函数被调用每次重新设定,所以当时间的变化,“今天”之间的区别“的今天,1983年”始终是相同的。

移动today的分配出了间隔的,所以它只能设置一次,为我工作。我看到改变每第二数目。

$(function () {
  today = new Date(); 
  var x = setInterval(function(){
    started = new Date(); started.setYear(1983);
    difference = today - started;
    document.getElementById("txt").innerHTML = difference;
  }, 1000); 
});    

其他提示

它们都被每1000毫秒(1秒每)中执行一次;然而,在相同的值每次第二名的成绩,820540800000.我想你也知道,你可以避开合理使用的“变种”。

污染全局名字空间

其实它按预期工作。只是等待,直到午夜。

我想你会发现它实际上是不断更新(很容易只是把警报在函数中看到的),你的问题是该值是相同的每一个的时间。

但问题是,你是不是完全设定开始日期,只有一年。所以你每次间隔执行时更新该日期的秒分钟和小时。为了解决这个问题,必须将其设置为一个特定的年,月,日,时,分,秒和毫秒。

这是部分的工作,如果你坐了整整一年,你会看到其中的差别。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top