我正在尝试使用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);
我不明白。如果我可以每秒显示日期,为什么我不能每秒显示日期的差异?
答案 0 :(得分: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);
});
答案 1 :(得分:2)
它们都是每1000毫秒执行一次(每秒1次);但是每次第二次产生相同的值,820540800000。我假设你也意识到你可以通过明智地使用“var”来避免污染全局名称空间。
答案 2 :(得分:0)
实际上它按预期工作。等到午夜。
答案 3 :(得分:0)
我认为你会发现它实际上是在不断更新(通过在函数中添加警报很容易看到),你的问题是每个时间的值都是相同的。
答案 4 :(得分:0)
问题是您没有完全设置开始日期,只设置年份。因此,每次执行间隔时,您都要更新该日期的秒分钟和小时。要解决此问题,您必须将其设置为特定的年,月,日,小时,分钟,秒和毫秒。
这部分有效,如果你在那里待了整整一年,你会看到差异