Javascript setInterval, passage de param ?

Résolu
Bonjour,

je n'arrive pas à faire passer un paramètre via un setInterval... je m'explique :

j'essaye d'arriver à passer une variable (ID) à une fonction (suivant) qui est appelée par mon setInterval.

Pour l'exemple, on va dire que ma fonction suivant est comme ceci :
function suivant(id){
  alert("je suis dans 'suivant'");
  alert(id);
}

J'ai essayé ceci :
interval = setInterval("suivant("+ID+")", tempsAttente);

et ceci :
interval = setInterval("suivant(ID)", tempsAttente);


Mais j'ai toujours une erreur disant que la fonction suivant() ne connait pas l'ID. (mon 2nd alert n'est pas déclenché)

Quelqu'un aurait une explication ou mieux, une solution ?

Merci beaucoup ! ;)

--
[Monkey Monk]
That's all folks !
Configuration: Windows Vista Familial
Intel Pentium Dual CPU T3400 @ 2.16 Ghz 2.17 Ghz
4Go RAM
NVIDIA GeForce 9500M GS

11 réponses

  1. Wah cool ! Et en plus tu fais le test à ma place ! Terrible ! XD

    Merci beaucoup ! ;)
    0
    1. ah ^^ c'est bon si tu remplaces par setTimeout() ça marche aussi!

      j'ai testé:

      <SCRIPT language=javascript>
      var interval;
      var test = 'pouitch';
      var startAuto = true;
      
      function start(ID){
        alert('1er alert :'+ID);
        interval = setTimeout(function(){suivant(ID);},5000);
      }
      
      function suivant(identifiant){
        alert('2nd alert :'+identifiant);
      }
      
      if(startAuto == true){
        start(test);
      }
      </SCRIPT>


      j'ai juste remplacé le nom de la fonction à ta méthode et ça marche ;)
      0
      1. OKKAYY !! :D

        CA MARCHEUH ! (presque 3h dessus quand mm... et pas moyen de trouver une doc javascript valide...)

        Alors bon, je sais pas pourquoi... mais il semblerait que l'on doivent faire comme ceci :
        interval = setInterval(function(){suivant(identifiant);},5000);


        Et de cette manière le paramètre est bien passé !

        Drôle de mic-mac mais bon... j'ai quand même réussis et j'suis trop fier là ! :p
        0
        1. oui sans mettre les " il doit directement rentrer dans la fonction suivant() et donc ne fait pas le setInterval
          0
          1. Ah bah je suis vraiment largué !

            Il semblerait que quand je fais : interval = setInterval(suivant(ID), 5000);

            ma fonction suivant reçoit bien la variable... par contre il déclenche la fonction sans attendre les 5 secondes !

            ...je commence à vouloir taper dedans... :D
            0
            1. Ah ok, oui c'est bizare, je regarderai ça aussi ^^
              0
              1. Bah en fait, je viens de tester la même théorie à l'instant et ça fonctionne... je ne comprends vraiment plus rien moi !

                Soit, l'important c'est que ça marche comme il faut ! :p
                0
                1. hum...

                  et si tu tentes un appel sans tes "

                  genre: interval = setInterval( suivant( ID ) , 5000);

                  EDIT: non en fait il faut bien les mettre, je regarde ça en local ;)
                  0
                  1. Bonjour InAme19 et merci pour ta réponse ! :D

                    J'ai effectivement essayé avec un variable test mais le résultat est le même...

                    Pour mieux comprendre mon problème voici à quoi ressemble mon script :
                    var interval;
                    var test = 'pouitch';
                    var startAuto = true;
                    
                    function start(ID){
                      alert('1er alert :'+ID);
                      interval = setInterval("suivant("+ID+")", 5000);
                    }
                    
                    function suivant(identifiant){
                      alert('2nd alert :'+identifiant);
                    }
                    
                    if(startAuto == true){
                      start(test);
                    }


                    Le premier alert apparait avec un joli 'pouitch' mais le second pas... et tous les tests que j'ai pu faire pour vérifier le passage d'arguments via le setInterval se sont trouvé infructueux...

                    Il me semble donc bien que mon problème est du au setIntreval, mais impossible de trouver un exemple de passage de variable comme je le tente ici...

                    0
                    1. comment déclares tu ta variable ID? et où?

                      fais un test avec une variable bidon. var ID = 2 par exemple.
                      0