SetTimeout en javascript

Résolu
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

  1. 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>
    1. 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. Bonjour a vous deux et merci beaucoup pour votre aide.
        Oui en fait j'ai mis des apostrophes et ca marche.

        Encore merci,

        Pierre.