1

我正在尝试使用 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);

我不明白。如果我可以每秒显示日期,为什么我不能每秒显示日期的差异?

4

5 回答 5

4

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); 
});    
于 2009-08-07T19:13:51.130 回答
2

它们都每 1000 毫秒(每秒 1 次)执行一次;然而,第二个每次都会产生相同的值,820540800000。我假设您也意识到可以通过明智地使用“var”来避免污染全局名称空间。

于 2009-08-07T19:21:27.573 回答
0

实际上它按预期工作。等到半夜吧。

于 2009-08-07T19:21:27.103 回答
0

我想您会发现它实际上在不断更新(只需在函数中添加警报即可轻松看到),您的问题是每次的值都是相同的。

于 2009-08-07T19:22:35.150 回答
0

问题是您没有完全设置开始日期,只有年份。因此,每次执行间隔时,您都会更新该日期的秒分和小时。要解决此问题,您必须将其设置为特定的年、月、日、小时、分钟、秒和毫秒。

这部分有效,如果您在那里坐了一整年,您会看到不同之处

于 2009-08-07T19:24:26.553 回答