Paramètre dans une fonction

Paramètre dans une fonction - HTML/CSS - Programmation

Marsh Posté le 31-10-2007 à 08:39:08    

Bonjours je tente d'effectuer un compte à rebours. Pour cela le code du compte à rebours se situe dans une fonction, et la fonction je l'envoi en string au timer. Mais j'aimerai changer le nombre de seconde du compte à rebours en fonction de l'argument envoyé à la fonction par le timer mais je ne sais pas comment faire. Ou si vous avez une autre solution ....
 
Voilà ce que j'ai tenté de faire :  
 

Code :
  1. function a(nombre)
  2. {
  3.  if (nombre == 0)
  4.  {
  5.  var p = document.getElementById('p');
  6.  p.innerHTML = '';
  7.  p.innerHTML = 'Construction terminée';
  8.  setTimeout("window.location='http://127.0.0.1/Jeu/login.php?page=batiments'", 1000);
  9.  }
  10.  else
  11.  {
  12.  var p = document.getElementById('p');
  13.  var minute = arrondir((nombre / 60));
  14.  var seconde = nombre - (minute * 60);
  15.  p.innerHTML = '';
  16.  p.innerHTML = minute+' min '+seconde+' sec ';
  17.  nombre--;
  18.  }
  19. }
  20. function arrondir(resultat)
  21. {
  22. resultat = Math.floor(resultat);
  23. return resultat;
  24. }
  25. setInterval('a(456)', 1000);/*le nombre passé en argument est le nombre de seconde et j'aimerai qu'il décrémente à chaque fois or ici il ne décrement pas*/

Reply

Marsh Posté le 31-10-2007 à 08:39:08   

Reply

Marsh Posté le 31-10-2007 à 10:41:34    

Salut
 
ben en fait tu peux faire bcp plus simple concernant la fonction setInterval (et setTimeout aussi d'ailleurs).
Tu peux appeller la fonction sont cette forme :

Code :
  1. //setInterval (fonction, delay, arguments)
  2. var maFonction = function ()
  3. {
  4. var nbArgs = arguments.length - 1; //le dernier argument ne nous interresse pas
  5. alert (nbArgs);  // affiche "2"
  6. alert (arguments[0]); // affiche "arg1";
  7. // etc.....
  8. }
  9. setInterval (maFonction, 1000, "arg1", "arg2" );


 
bien sur en pasant les arguments dans un tableau c ptetre plus simple à gérer (tu récupereres ton array comme ca 'var mesArgs = arguments[0];' )
 
En espérant que ca te dépannes :)
 
EDIT :
Oublies ce que j'ai écris, j'avais pas compris, je te refais un post d'ici 5 min ;)


Message édité par SICKofitALL le 31-10-2007 à 10:45:50

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 31-10-2007 à 11:09:13    

okokok
 
Ton soucis vient du fait que tu décrementes une variable de parametre, qui n'existe que dans la fonction où tu t'en sers, donc "nombre" garde tjrs la même valeur ;)
 
En fait tu peux faire qqch de bcp plus simple :

Code :
  1. countdown = {
  2. monTimeout:   0,
  3. timer:  null,
  4. func:  function ()
  5.      {
  6.                             var p = document.getElementById ("p" );
  7.                             var minute = parseInt (countdown.monTimeout / 60);
  8.                             var seconde = countdown.monTimeout % 60;
  9.                             p.innerHTML = minute + " min " + seconde + " sec ";
  10.                             countdown.monTimeout--;
  11.                             if (countdown.monTimeout < 0)
  12.                             {
  13.                                 p.innerHTML = "Construction terminée";
  14.                                 clearInterval (countdown.timer);
  15.                                 var go = function () { window.location='http://127.0.0.1/Jeu/login.php?page=batiments' };  // fonction à lancer à la fin du décompte
  16.                                 setTimeout (go, 1000);
  17.                             }
  18.                             return true;
  19.      }
  20. }
  21.   countdown.monTimeout = 65; // nombre de seconde que tu veux pour ton décompte  
  22.   countdown.timer = setInterval (countdown.func, 1000); // lancement du décompte


 
voilà, en cas de soucis hésites pas :)


---------------
We deserve everything that's coming...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed