[Resolu][JS] Quelle différence entre mes deux codes ?

Quelle différence entre mes deux codes ? [Resolu][JS] - HTML/CSS - Programmation

Marsh Posté le 16-02-2011 à 08:45:55    

Bonjour à tous,
 
Je souhaiterais avoir vos avis sur deux petits bouts de code que j'ai réalisé :

Code :
  1. function decompte(temps,div_affichage)
  2.             {
  3.                 document.getElementById(div_affichage).innerHTML=temps;
  4.                 temps = temps-1;
  5.                 setTimeout(function(){decompte(temps,div_affichage)}, 1000);
  6.             }


Code :
  1. function decompte_2(temps,div_affichage)
  2.             {
  3.                 temps_affiche = temps;
  4.                
  5.                 taille = temps_affiche.length;
  6.                
  7.                 temps_affiche = ( (temps_affiche.substring(taille-12,taille-9)) + "." + (temps_affiche.substring(taille-9,taille-6)) + "." + (temps_affiche.substring(taille-6,taille-3)) + "." + (temps_affiche.substring(taille-3,taille-0)) );
  8.                
  9.                 document.getElementById(div_affichage).innerHTML = temps_affiche;
  10.                
  11.                 temps = temps-1;
  12.                 setTimeout(function(){decompte_2(temps,div_affichage)}, 1000);
  13.             }


 
Il s'agit d'un décompteur de secondes, relativement simple.
La première fonction marche impec, pas de soucis, si on lui mets 1 000 000 de secondes, tout décompte bien, la fonction se rappelle en enlevant une seconde à chaque... seconde.
 
Pour la seconde fonction, j'ai juste repris ce que j'avais fait pour la première, en voulant mettre un peu en forme l'affichage du décompteur en introduisant des points pour séparer les milliers des millions etc... sauf que dans cette seconde fonction, l'affichage est correct, mais il n'y a pas de rappel de la fonction et le compteur reste statique
 
J'ai essayé de ne modifier qu'une variable destinée à l'affichage (temps_affiche), donc je ne vois pas quelle peut être la différence qui fait qu'une fonction marche et non l'autre, qu'une se rappelle et non l'autre, d'autant plus que le premiers affichage est correct pour la seconde
 
Merci pour votre aide et vos commentaires


Message édité par Toscanno le 16-02-2011 à 10:43:39
Reply

Marsh Posté le 16-02-2011 à 08:45:55   

Reply

Marsh Posté le 16-02-2011 à 09:49:35    

Déjà, tu pars du principe que taille >= 12. Si tu mets un temps de 1000 ça va pas le faire :/
 
ps : j'aime bien le coup du taille-0 :D


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-02-2011 à 10:24:27    

si tu avais une console JS ou tu testais ton code, tu verrais que temps_affiche.substring is not a function
ca signifie que temps_affiche est un nombre.
La technique c'est de transformer en string cette variable au moment ou tu la set avec temps
 

Code :
  1. temps_affiche = temps+"";


---------------
Blablaté par Harko
Reply

Marsh Posté le 16-02-2011 à 10:43:21    

rufo a écrit :

Déjà, tu pars du principe que taille >= 12. Si tu mets un temps de 1000 ça va pas le faire :/
 
ps : j'aime bien le coup du taille-0 :D


 
Oui je vais améliorer la gestion de la taille, c'est sur que c'est pas très générique là...
Pour le '-0' c'est que j'ai testé au début avec du -1 puis modifié ^^
 

gatsu35 a écrit :

si tu avais une console JS ou tu testais ton code, tu verrais que temps_affiche.substring is not a function
ca signifie que temps_affiche est un nombre.
La technique c'est de transformer en string cette variable au moment ou tu la set avec temps
 

Code :
  1. temps_affiche = temps+"";



 
Ok merci, je comprends mieux ça, et je vais me toruver de quoi debuguer correctement.
 
Merci pour les infos.
 

Reply

Marsh Posté le 16-02-2011 à 10:50:10    

firebug


---------------
Blablaté par Harko
Reply

Marsh Posté le 17-02-2011 à 11:01:29    

+1 pour firebug, pour rappel, le javascript est assez tatillon dans son exécution quand il rencontre une erreur et n'est généralement pas très loquasse :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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