IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Compteur en fonction du temps


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 101
    Par défaut Compteur en fonction du temps
    Bonjour à tous,

    Alors voilà, je viens de réaliser un compteur me pemettant d'ajouter un nombre X toutes les secondes depuis une date de base.
    Le script fonctionne bien mise à part qu'il semble bloquer une fois arriver à un certain montant, dans ce cas-ci 367.624.925.321, il retombe à 367.624.898.000 je ne comprend pas bien, ca doit être un problème avec les dates, j'ai tout testé rien ne fonctionne :/

    Peut-être avez LA solution...

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    $(document).ready(function() {
    	// Belgium National Debt
    	currentDebt = setInterval(augmenteDette, 1000);
    });
     
    function format(object)
    {
    	object = '' + Math.round(object);
    	if(object.length > 3)
    	{
    		var mod = object.length % 3;
    		var output = (mod > 0 ?(object.substring(0,mod)): '');
    		for(var i=0; i<Math.floor(object.length/3); i++)
    		{
    			if((mod==0)&&(i==0))
    			{
    				output+=object.substring(mod+3*i,mod+3*i+3);
    			}
    			else
    			{
    				output+='.'+object.substring(mod+3*i,mod+3*i+3);
    			}
    		}
    		return(output);
    	}
    	else
    	{
    		return object;
    	}
    }
     
    var dateOrigine = new Date(30,09,2012);
    var detteOrigine = 367624898644;
    var increment = 453;
     
    function augmenteDette()
    {
        var now = new Date();
        // nombres de millisecondes écoulées entre maintenant et la date d'origine
        var deltamillisecondes = now.getSeconds() - dateOrigine.getSeconds();
        // on calcul notre nouvelle dette
        var nouvelleDette = detteOrigine + deltamillisecondes*increment;
    	var timer = document.getElementById("debt");
    	timer.innerHTML = format(nouvelleDette) + " €";
    }
    Vous pouvez voir le compteur en action ici : cliquez ici

    Un grand merci !

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonsoir,
    quand tu écris...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // nombres de millisecondes écoulées entre maintenant et la date d'origine
    var deltamillisecondes = now.getSeconds() - dateOrigine.getSeconds();
    ceci est FAUX

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // nombres de millisecondes écoulées entre maintenant et la date d'origine
    var deltamillisecondes = now.getTime() - dateOrigine.getTime();
    D'autre part, il faut bien te rendre compte que dateOrigine.getSeconds() te renverra toujours 0 et que now.getSeconds() te retournera une valeur de 0 à 59, donc acte!

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 101
    Par défaut
    Alors quelle est la solution ? Je suis loin d'être doué en JS donc... En tout cas j'ai remplacé mon code par le tient, malheureusement on dirait que le compteur n'est plus bon, il est maintenant trop elevé, il n'ajoute plus les 453 de depart, mais je pense 453453, tu peux le voir en action sur ce site

    Un grand merci de ton aide

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Je suis loin d'être doué en JS donc...
    rien à voir avec le javascript mais il faut n peu de reflexion sereine et calme

    getTime() te retourne un temps en milliseconde, donc pour avoir des secondes on divise par 1000.

    Pour calculer le temps en secondes entre deux dates date_1.getTime() - date_2.getTime().

    Fait un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var d1 = new Date(30,09,2012);
    var d2 = new Date();
    alert(( d2.getTime() - d1.getTime())/1000);
    tu vas voir que cela fait un méga paquet de secondes !


    Donc il te reste à ajuster les incrément et valeur d'origine.

  5. #5
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 119
    Billets dans le blog
    1
    Par défaut
    C'est au meme temps drole votre question ! Javascript fait baisser la dette !!

    je propose une solution qui fait qu augmenter le chiffre !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <!DOCTYPE html>
    <html>
     
      <head lang="fr-FR">
     
        <meta charset="utf-8">
        <title>Javascript qui fait baisser la dette </title>
          <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
    <script>
    	var dateOrigine = new Date(30,09,2012);
    	var detteOrigine = 367624898644;
    	var increment = 453;
    	var interval=Math.floor((new Date() - dateOrigine)/1000)
    	  //pas de virgule 
       var dbt=(interval*increment)+detteOrigine;
       //la dette a l instant present 
       function setDbt(element ,valeur){
          var val=(valeur+"").match(/(\d{1,3}(?:[\.|,]\d*)?)(?=(\d{3}(?:[\.|,]\d*)?)*$)/g ).join(' ')+"€";
    	  //mise en forme  monnaie 
          $(element).val(val);
       }
       $(function(){
    		setDbt("#dbt" ,dbt);
    		//affiche la dette de depart 
       setInterval(function(e){
    			setDbt("#dbt" ,dbt+=453);
    			//affiche la dette chaque seconde avec increment 
    		}, 1000);
     
       });
      </script>
    </head>
      <body>
        <input id="dbt" /> 
     
      </body>
     
    </html>
    Et biensure pour les grand nombre en javascript faut se rappeler de
    MAX_VALUE et ca depend parfois des navigateurs

    normalement c est 2^53 +1


    Voila ,

Discussions similaires

  1. Afficher une fonction du temps
    Par Benjikos dans le forum Signal
    Réponses: 1
    Dernier message: 13/11/2007, 23h50
  2. Déclencher un événement en fonction du temps
    Par etud_ini dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 11/10/2007, 12h10
  3. vitesse en fonction du temps
    Par moustiqu3 dans le forum MATLAB
    Réponses: 1
    Dernier message: 18/05/2007, 09h01
  4. comment faire cette fonction de temps
    Par yassin123441 dans le forum C++
    Réponses: 4
    Dernier message: 14/03/2007, 23h19
  5. [Mail] la fonction mail-temps limite d'un script
    Par fk04 dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2006, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo