SetTimeout en javascript

Résolu/Fermé
123pierre Messages postés 48 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 28 janvier 2011 - 6 sept. 2010 à 11:40
123pierre Messages postés 48 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 28 janvier 2011 - 7 sept. 2010 à 01:46
Bonjour a tous,

Pour essayer de comprendre setTimeout j'ai voulu faire le petit compte a rebours suivant.
Mais pourquoi diantre je passe directement a 0?
Je ne comprend pas pourquoi il n'y a pas de temporisation.

Merci a ceux qui vondront bien m'aider.

Voici le code.

<body>
<div id="clock">
</div>
</body>
<script language="javascript">
var maintenant=10;

function affiche(){	
document.getElementById("clock").innerHTML=maintenant;	
setTimeout(suivant(),5000);
}

function suivant(){
	if (maintenant>0){
	maintenant--;
	affiche();
	}
	alert("c'est fini");
	}
	
affiche();	
</script>



Cordialement,

Pierre.




3 réponses

Plutôt voir du côté de
setTimeout(suivant(),5000);
Et y préférer
setTimeout("suivant()",5000);

Sinon, il exécute la fonction de suite.
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 sept. 2010 à 16:20
tu utilises dans ta fonction affiche la variable maintenant, elle n'existe pas dans la fonction il faut la passer en argument
idem pour l'autre fonction
<body>
<div id="clock">
</div>
</body>
<script language="javascript">
var maintenant=10;

function affiche(maintenant){	
document.getElementById("clock").innerHTML=maintenant;	
setTimeout(suivant(maintenant),5000);
}

function suivant(maintenant){
	if (maintenant>0){
	maintenant--;
	affiche(maintenant);
	}
	alert("c'est fini");
	}
	
affiche(maintenant);	
</script>
0
123pierre Messages postés 48 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 28 janvier 2011 2
7 sept. 2010 à 01:46
Bonjour a vous deux et merci beaucoup pour votre aide.
Oui en fait j'ai mis des apostrophes et ca marche.

Encore merci,

Pierre.
0