JeuWeb - Crée ton jeu par navigateur
[réglé] (JS) Compte à rebours - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [réglé] (JS) Compte à rebours (/showthread.php?tid=478)



[réglé] (JS) Compte à rebours - Raoull - 22-11-2006

Salut,
j'essaie de faire un compte à rebours, à la facon d'OGame, qui s'affiche en attendant la fin d'une action.
J'ai utilisé un script de l'ancien forum, que j'ai adapté, mais ca ne marche toujours pas...

Le voici, si vous savez ce qui peut clocher je suis preneur, car la fonction "reste" n'est ne se met pas en route, je ne sais pas pourquoi...

Voici mon script simplifié :

Code PHP :
<?php 
<script>
function
reste(cb){
var
zetime = cb;
if (
zetime > 0) {
var
heures = Math.floor(zetime / 3600);
var
minutes = Math.floor(((zetime / 3600) - Math.floor(zetime / 3600)) * 60);
var
seconds = zetime - ((Math.floor(zetime / 60)) * 60);

document.getElementById("axion").innerHTML = heures + ':' + minutes + ':' + seconds;
var
restant = (zetime - 1);
setTimeout("reste(" + restant + ");", 1000);
}
else {
document.getElementById("axion").innerHTML = "<a href='index.php?p=sit'>Situation</a>";
}
}
</
script>

<?
$tr=60; // temps restant : on part sur 60secondes par ex.
echo '<div id="axion">?</div>';
echo
'<script>reste('.$tr.');</script>';
?>

Ce script est donc sensé affiché toutes les secondes le temps restant, et arrivé à 0 il affiche un lien, dans le DIV "axion".

---

Pour les navigateurs "récents" on est pas obligé de mettre des guillemets autour de la fonction appelée dans SetTimeout.
Donc au lieu de
Code PHP :
<?php 
setTimeout
("reste(" + restant + ");", 1000);
on peut mettre
Code PHP :
<?php 
setTimeout
(reste(restant), 1000);
mais ca ne fonctionne pas tout de même...

Pour info je teste actuellement sous IE qui est sensé être le navigateur le plus 'large' en javascript, et qui accepte à peu près tout...


RE: (JS) Compte à rebours - Plume - 22-11-2006

Je suis pas un expert en JS. En tout cas je sais que Firefox propose une console JavaScript qui repère certaines erreurs, elle pourrait t'aider au debuggage.
Cependant j'ai vu ça
Code PHP :
<?php 
document
.getElementById("axion").innerHTML = "<a href='index.php?p=sit'>Situation</a>":
Ma question est : c'est normal les deux points ':' à la fin de ton instructions ? Tongue


RE: (JS) Compte à rebours - P4rk3r - 22-11-2006

lol tu as de bon yeux DämEn Oo
Je penses que c'est sa qui empeche ton script de marcher.


RE: (JS) Compte à rebours - Raoull - 22-11-2006

Non en effet, tu as raison. Faute de frappe...

Mais mon problème ne vient pas de là, car pour debugger ma fonction JS j'ai mis des "alert()" : 1 au début de la fonction, 1 au début du IF et 1 au début du ELSE, pour voir ce qui se passe.

Et en fait aucune alerte ne s'affiche, même pas celle en début de script, avant le if/else.
Ca veut dire que la fonction n'est pas appellée dès le départ depuis le
Code PHP :
<?php 
$tr
=60; // temps restant : on part sur 60secondes par ex.
echo '<div id="axion">?</div>';
echo
'<script>reste('.$tr.');</script>';

Et ca c'est très étrange... Comme si le javascript était désacitivé de mon navigateur, ce qui n'est pas le cas.

En regardant la source de ma page générée, j'ai bien :
Code PHP :
<?php 
<script language="JavaScript">reste(30);</script>
Mais la fonction n'est pas appelée...
Bizzare ... Vous avez dit "bizzare" ?


RE: (JS) Compte à rebours - P4rk3r - 22-11-2006

Tu as des ?> dans le code source de ta page généré par le navigateur ? Oo
Sinon est ce que ta fonction js est bien incluse dans ta page ?

Edit : Normalement les div doivent etre vide non ?


RE: (JS) Compte à rebours - Raoull - 22-11-2006

Bon... Et bien si c'était cette faute de frappe qui enpêchait l'execution du script entier !

Encore merci à toi DämEn !
Décidément tu es mon sauveur ce soir !

PS : le "?>" c'est ici qu'il apparait, pas dans mon script. Et si, on peut mettre un texte par défaut dans le div, il s'affacera et sera remplacer normalement.


RE: (JS) Compte à rebours - Plume - 22-11-2006

LoL Je t'en prie, c'est un plaisir Smile

Bon courage pour la suite Wink

Tchô


RE: (JS) Compte à rebours - Raoull - 22-11-2006

Oui sauf que cette saloperie de compteur ne fonctionne pas... Il affiche le lien direct :/
Je vais tacher de le faire fonctionner sans alerter tout le monde pour un ";", et ensuite je le mettrai dans les scripts car il m'en aura fait baver le salopio...


RE: [presque réglé] (JS) Compte à rebours - Raoull - 22-11-2006

Ca y est, le script fonctionne et je le mets dans le forum "script".
Problème réglé !