JeuWeb - Crée ton jeu par navigateur
encore un pb de js - 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 : encore un pb de js (/showthread.php?tid=751)



encore un pb de js - max - 02-02-2007

bonjour, je me met au JS mais j'ai deja un pb...
je veu simplement créer un script de compte a rebour dynamique qui passe de 10à1 en descendant de 1 en 1 mais je n'y arrive pas
<SCRIPT language=javascript>
function disp_delai()
{
var time=10;
if (time>0) {
time=time-1;
setTimeout("disp_delai()",1);
return time;}
}
document.write(disp_delai())
</script>


ce script m'affiche tjr 9 alors que je voudrais qu'il continue a descendre jusqu'a atteindre 0 (if (time>0)) mais ca ne marche pas

vous pouriez m'expliquer svp? ^^


RE: encore un pb de js - gtsoul - 02-02-2007

un script que j'utilise
Code PHP :
<?php 
var valeur;
var
x;
var
attente;
function
Init(attente) {
valeur=attente;
x = window.setInterval('Decompte()', 1000);
}

function
Decompte() {
if(
valeur > 1)
{
(
window.document.getElementById('compteur').innerHTML = --valeur);
(
window.document.getElementById('compteur').className = 'alert');
}
else
{
(
window.document.getElementById('compteur').innerHTML = 'ok');
(
window.document.getElementById('compteur').className = 'bon');
(
window.clearInterval(x));
}
}

function
ResetCompteur(attente) {
valeur = attente;
window.clearInterval(x);
Init(attente);
}
window.onload = Init();

ensuite init(152); suivi d'un <div id="compteur">

le settimeout prend des millisecondes en 2e argument, de plus il doit être à l'extérieur de la fonction appelée.


RE: encore un pb de js - barst - 02-02-2007

Sort l'initialisation de ta variable de la fonction :
Code PHP :
<?php 
var time=10;
Car en le mettant dans la fonction tu le remets à chaque fois à 10 et tu décomptes de 1.
Donc 10-1 = 9


RE: encore un pb de js - Seren - 02-02-2007

Il suffit de mettre le var time = 10; juste avant la déclaration de ta fonction.

Et à mon avis le return time doit être à l'extérieur du 'if'. Mais si je comprends bien le code, ça risque de retourner d'abord 1, puis 2 , etc.. parce que tu vas sortir de ta condition quand time sera égal à 0.


RE: encore un pb de js - max - 02-02-2007

hum... j'ai essayé toute vos méthodes mais ca ne marche pas...http://www.jeuweb.org/board/images/codebuttons/php.gif
Insérer du code PHP formatté
pour gtsoul j'essaye de faire le script moi meme ^^

pour l'insatnt ca donne ca:
Code PHP :
<?php 
<SCRIPT language=javascript>
var
time=10;
function
disp_delai()
{
if (
time>0)
{
time=time-1;
setTimeout("disp_delai()",1);
return
time;
}
}
document.write(disp_delai())
</
script>

j'ai essaté de changer le return mais rien ne change...
comprend paaaa


RE: encore un pb de js - gtsoul - 02-02-2007

setTimeout("disp_delai()",1); veut dire 1000 appels/secondes à la fonction disp_delai, bref tu plantes ton client avec ca

J'ai mal expliqué mais il n'y a pas de retour de fonction.
window.document.getElementById('compteur').innerHTML veut dire tu prends le <div> avec un id="compteur" et tu changes sa valeur par ce qui suit.

si je fais
window.document.getElementById('compteur').innerHTML = 'plop';

et que mon html est <div id="compteur">tata</div>
il deviendra <div id="compteur">plop</div>


Donc dans l'ordre :
déclaration de ta fonction dans le head
et dans le body
tu cases une balise js ou tu fais un appel de Init(attente), avec attente variable php
et tu crées une balise html <div id="compteur"></div>


RE: encore un pb de js - max - 03-02-2007

c'est bon grace a l'aide de carlou mon script marche ^^

Code PHP :
<?php 
<html>
<
head>
<
SCRIPT language=javascript>
var
timet=10;

function
disp_delai()
{
if (
timet>0)
{
timet=timet-1;
window.setTimeout("disp_delai();",999);
}
document.getElementById("compteur").innerHTML=timet;
}

</
script>
</
head>
<
body>
<
div id="compteur"></div>
<
script language="JavaScript">disp_delai();</script>
</
body>
</
html>
j'ai plu qu'a essayer de metre mes valeurs php (de la bdd) pour faire un véritable compte a rebour de construction dynamique!