Partage
  • Partager sur Facebook
  • Partager sur Twitter

Multiples lancements de setTimeout

Sujet résolu
    7 octobre 2009 à 15:14:07

    Bonjour à tous,

    Voilà fort longtemps que je ne m'étais pas connecté au forum, mais aujourd'hui, j'ai besoin de votre aide.
    Je travaille sur un projet personnel mais je rencontre une difficulté sur une fonctionnalité Javascript.

    Pour actualiser une page (comprenez qu'il y a de l'Ajax derrière), j'utilise un setTimeout sur une fonction paramétrée.
    Le problème est que quand le settimeout se lance, la fonction est démultipliée en fonction du nombre de paramètre.

    Voilà un petit exemple tout simple que je vous ai fait pour que vous compreniez ma difficulté.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Essai</title>
    
    <script type="text/javascript">
    
    
    function charger(id) {
    	
    	document.getElementById("count").innerHTML=id;
    	setTimeout(function () {charger(id)}, 2000);
    
    }
    
    </script>
    
    </head>
    
    <body>
    <h1></h1>
    <a href="javascript:charger(1);">charger 1</a>
    <a href="javascript:charger(2);">charger 2</a>
    <a href="javascript:charger(3);">charger 3</a>
    
    <div id="count"></div>
                 
    </body>
    </html>
    


    Lorsque vous cliquez sur charger(1), c'est un 1 qui apparaît.
    Lorsque vous cliquez sur charger(2), c'est un 2 qui apparaît...suivi du 1 qui le remplace.
    Idem pour le 3

    Ce que je cherche à faire serait de stopper charger(1) quand charger(2) est lancé de manière à ne pas avoir une succession d'affichages.

    En vous remerciant par avance de votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      7 octobre 2009 à 15:31:22

      var toc;
      function charger(id) {
      	
      	document.getElementById("count").innerHTML=id;
      	toc = setTimeout(function () {charger(id)}, 2000);
      
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        7 octobre 2009 à 15:37:37

        Je ne vois aucun changement en utilisant la variable toc.

        J'ai toujours un défilement de chiffre...
        • Partager sur Facebook
        • Partager sur Twitter
          7 octobre 2009 à 15:42:38

          Huum mes souvenirs sont foirés alors, il me semblait que ça marchait..

          Dans ce cas:

          var toc;
          function charger(id) {
          	
          	document.getElementById("count").innerHTML=id;
          	if (toc) {
          		clearTimeout(toc);
          	}
          	toc = setTimeout(function () {charger(id)}, 2000);
          
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
            7 octobre 2009 à 15:50:40

            c'est pas clearTimeout ?
            • Partager sur Facebook
            • Partager sur Twitter
              7 octobre 2009 à 16:04:34

              Au début ça ne marchait pas mais en fait, la propriété cleanTimeout() n'existe pas, il s'agit de clearTimeout()

              Merci pour ton aide !
              • Partager sur Facebook
              • Partager sur Twitter
                7 octobre 2009 à 16:04:59

                Pense à mettre ton sujet en résolu à l'aide du lien en bas de page ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  7 octobre 2009 à 16:05:29

                  Passes le sujet en résolu.

                  Grilled :(
                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 octobre 2009 à 16:06:36

                    :p pour une fois que c'est pas moi...
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Multiples lancements de setTimeout

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown