Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[javascript] setTimeout qui est étrange (résolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Mon Dec 24, 2007 6:53 pm    Post subject: [javascript] setTimeout qui est étrange (résolu) Reply with quote

Bonsoir,

Alors voilà, je fais un projet qui est une application Web... c'est un truc perso. Je suis obligé d'utiliser du javascript dedans.

Ah oui, j'oubliais: je sais qu'il ne faut pas que je post ce genre de message parce que c'est un forum linux et non progra ... mais je ne sais pas sur quel forum je devrais m'inscrire pour:

- le javascript
- le html
- le java (jsp, etc)

J'aimerais trouver un forum dynamique comme celui-ci :wink:

Donc, si vous pouviez me conseiller ... et en attendant, je post toujours ce message :lol:



Donc voilà, j'ai une page "warning.jsp" qui est appellée si un problème est détecté (ca apparait après le login; par exemple, dans le seul cas actuel, si un utilisateur essaye de se relogger alors qu'une session existe déjà, je le prévient en passant par "warning.jsp" et ensuite, je le redirige normalement vers la page principale). Cette page JSP recupère un bean (une class quoi) qui contient le message et le delai d'attente avant d'etre redirigé automatiquement (en milliseconde). Pour le premier cas, le message dis qu'il y a déjà une session d'ouverte et qu'il va récupérer celle-ci; le temps d'attente est 3000 millisecondes, soit 3 secondes.


Donc, ce que je veux faire actuellement, c'est modifier la valeur d'une zone texte (initialisée à 3) toute les secondes ... pour passer à:

2 secondes (après 1 seconde)
1 secondes (après 2 secondes)

en sachant que le 0 placé en dehors de la boucle, exactement au moment de la redirection...

J'ai donc une simple boucle avec 2 variables:
- delay qui représente 1 seconde au début ...
- remaining qui représente la prochaine valeur à placer dans la zone texte

Je précise que, en utilisant la fonction "alert", je vois bien les valeurs qui sont ainsi:

1er passage dans la boucle: delay=1000, remaining=2
2ème passage dans la boucle: delay=2000, remaining=1
(tout est donc normal, la boucle doit s'effectuer en quelques fraction de millisecondes je présume)

la redirection est actuellement commentée, donc le compteur devrais passer de 3 à 1 et ne rien faire ...

(ah oui, la zone texte n'est pas dans le code ... c'est plus bas dans la page en fait)

Code:
<html>
<script language="JavaScript">
   
   
   for (var delay=1000, remaining=<%= (timer/1000)-1 %>; delay<<%= timer %>; delay+=1000, remaining-=1) {
      setTimeout("document.the_counter.counter.value=remaining",delay);
      <%--window.setTimeout("document.the_counter.counter.value=remaining",delay);--%>
      <%--alert(delay+"/"+remaining);--%>
   }
   
   <%--window.setTimeout("document.the_counter.counter.value='0';window.location='quickreminder.jsp';",<%= timer %>)--%>
</script>
<head>



Vous avez bien vu ?

Bon alors .... telle que le code est la, si j'exécute ben ... j'ai un 3 au début (tout est normal) et après 1 secondes, je passe directement à 0 et non 2 8O
Alors 2 questions se pose: d'ou sort le 0 :lol: et ou sont passé le 2 et le 1 !!! :twisted:


Alors, vous avez trouvé la réponse ?

Répondez ici meme, vous gagnerez peut-etre un super cadeau pour noel :roll:


Autre question: quel est la différence entre window.setTimeout et setTimeout tout court ??? pareil que "this" en java ???


Bon, pour faciliter la chose, je vais vous montrer le code source de la page complète:

Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
   
<html>
<script language="JavaScript">   
   
   for (var delay=1000, remaining=2; delay<3000; delay+=1000, remaining-=1) {
      setTimeout("document.the_counter.counter.value=remaining",delay);
   }   
</script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Votre attention S.V.P. ...</title>
</head>
<body>

<center>
   <img src="image/warning.jpg"/><br><br><br>
   
   Une session existe déjà! Réutilisation de celle-ci ...

   
   <br><br><br>
   
   <form method="post" name="the_counter">
      Vous allez être redirigé dans <input type="text" name="counter" size="1" style="border:0" value="3">secondes ...
   </form>
   
   <A HREF="quickreminder.jsp">cliquer ici pour continuer ...</A>
</center>
</body>

</html>


Notez que j'utilise firefox pour tester ...


Merci d'avance à ceux qui vont m'aider :roll: :lol: :P
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org


Last edited by loopx on Tue Dec 25, 2007 3:03 am; edited 1 time in total
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Tue Dec 25, 2007 3:02 am    Post subject: Reply with quote

j'ai trouvé ....


c'est un problème de ré-évaluation apparament ...



ceci:
Code:
fct="document.the_counter.counter.value="+remaining;
      window.setTimeout(fct,delay);



fonctionne a merveille ... le fait de placer la variable dans un truc entre " " fait foirer la variable qui crache visiblement un 0 8O ca aurait pu etre vide ou quoi mais non, ca crache 0 ...


:roll:
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum