Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction dans setInterval()

Sujet résolu
    19 octobre 2018 à 15:04:59

    Bonjour,

    Je suis bloquer sur un point, je veux creer un petit timer voici le code :

    var count=3;
    var counter = setInterval(function(){
        count--;
        console.log(count);
    }, 1000);

    Ce code fonctionne mais je veux maintenant passer par une fonction et la ca ne marche plus ...

    var count=3;
    var counter = setInterval(function(){
        timer(count);
    }, 1000);
    
    function timer(count){
        count--;
        console.log(count);
        return count;
    }




    • Partager sur Facebook
    • Partager sur Twitter
      19 octobre 2018 à 15:09:56

      tu peux faire comme ceci si tu veux passer par une fonction nommé :
      window.onload = function ()
      {
      	var count = 3;
      	var anim = setInterval(timer,1000);
      	function timer()
      	{
      		console.log ( count );
      		if ( count > 0 )
      		{
      			count--;
      		}
      		else
      		{
      			clearInterval ( anim );
      		}
      	}
      };

      -
      Edité par ox223252 19 octobre 2018 à 15:13:34

      • Partager sur Facebook
      • Partager sur Twitter

      la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

      Mon GitHub

        19 octobre 2018 à 15:56:41

        Bonjour,

        Je me permet de compléter la réponse qui a été fait. Le script que tu as fait est correct, sauf que tu ne change pas ta variable "count". Je pense que tu considère que la variable "count" dans la fonction et dans le reste du script est le même, or non. Le paramètre de la fonction est en faite une copie de la variable que tu donne en paramètre mais elle se comporte de manière indépendante. Ainsi, quand tu fait "count--" dans la fonction, ce n'est pas appliqué à la variable count du reste du script.

        En gros, si je reprend ton code que je le modifie légèrement pour mettre en évidence que les deux variables sont différentes, ça donne ça : 

        var count=3;
        var counter = setInterval(function(){
            timer(count);
        }, 1000);
         
        function timer(other_count){
            other_count--;
            console.log(other_count);
            return other_count;
        }

        Et donc on voit que dans l'interval, il fait toujours "time(3)".

        Pour corriger, il suffit de rajouter "count = timer(count)"  dans l'interval (toute petit modif) (j'ai laissé le nom du paramètre modifié pour bien mettre en évidence ce qui se fait réellement) :

        var count=3;
        var counter = setInterval(function(){
            count = timer(count);
        }, 1000);
         
        function timer(other_count){
            other_count--;
            console.log(other_count);
            return other_count;
        }

        J'espère avoir été assez clair et si tu as d'autres questions, n'hésite pas.

        -
        Edité par duquesnoyalexy 19 octobre 2018 à 15:57:30

        • Partager sur Facebook
        • Partager sur Twitter
          19 octobre 2018 à 17:46:56

          Super merci pour la reponse ! ;)

          Je passe le sujet en résolu.

          • Partager sur Facebook
          • Partager sur Twitter

          Fonction dans setInterval()

          × 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