Question

Je suis en train de faire un calcul date de différence très basique avec javascript, mais je obtenir un comportement mixte de setInterval ().

Cette mise à jour en permanence:

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

Mais cela ne les mises à jour une fois:

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

Je ne comprends pas. Si je peux montrer la date à chaque seconde, pourquoi je ne peux pas montrer la différence entre les dates chaque seconde?

Était-ce utile?

La solution

Vous réinitialisant today chaque fois que la fonction est appelée, donc, tandis que les changements de temps, la différence entre « aujourd'hui » et « aujourd'hui, 1983 » est toujours la même.

Déplacement de la cession de today de l'intervalle, il est donc fixé une fois, a travaillé pour moi. Je vois le nombre change chaque seconde.

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

Autres conseils

Ils sont tous deux exécutaient une fois tous les 1000ms (1 par seconde); Toutefois, les résultats du deuxième dans la même valeur à chaque fois, 820540800000. Je suppose que vous réalisez que vous pouvez éviter de polluer l'espace de noms global par l'utilisation judicieuse de « var ».

En fait, il fonctionne comme prévu. Attendez jusqu'à minuit.

Je pense que vous trouverez qu'il est mise à jour en permanence fait (facilement vu par simplement mettre une alerte dans la fonction), votre problème est que la valeur est la même tous temps.

Le problème est que vous n'êtes pas de régler la date a commencé pleinement, seule l'année. Donc, vous mettez à jour secondes les minutes et les heures de cette date chaque fois que l'intervalle exécute. Pour corriger cela, vous devez le mettre à une année donnée, mois, jour, heure, minute, seconde et milliseconde.

Ceci est en partie de travail, si vous vous êtes assis là pour une année complète, vous verrez la différence

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top