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);

理解できません。1 秒ごとに日付を表​​示できるのに、1 秒ごとの日付の違いを表示できないのはなぜですか?

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 回 (1 秒ごとに 1 回) 実行されます。ただし、2 番目の結果は毎回同じ値、820540800000 になります。「var」を適切に使用することで、グローバル名前空間の汚染を回避できることもお気づきだと思います。

于 2009-08-07T19:21:27.573 に答える
0

実際、期待どおりに動作します。真夜中まで待ってください。

于 2009-08-07T19:21:27.103 に答える
0

実際には常に更新されていることがわかると思います(関数にアラートを入れるだけで簡単にわかります)。問題は、値が毎回同じであることです。

于 2009-08-07T19:22:35.150 に答える
0

問題は、開始日を完全に設定しておらず、年だけを設定していることです。したがって、間隔が実行されるたびに、その日付の秒の分と時間を更新しています。これを修正するには、特定の年、月、日、時、分、秒、およびミリ秒に設定する必要があります。

これは部分的に機能しています。1 年間そこに座っていれば、違いがわかります。

于 2009-08-07T19:24:26.553 に答える