Bonjour,
J'ai un problème avec mon code Javascript. Je vous ai simplifié le principe pour plus de compréhension :
<html>
<script>
var autorisation = true;
function a()
{
if(autorisation)
{
autorisation = false;
setTimeout("b()",10000);
}
}
function b()
{
alert("ok");
autorisation = true;
}
</script>
<body>
<input type="button" value="bouton1" onclick="a()">
<input type="button" value="bouton2" onclick="b()">
</body>
</html>
Amuse-vous à cliquer sur le bouton 1 et ATTENDEZ. Au bout de 10 secondes l'application doit vous afficher "ok". Jusque là c'est bon... Sauf que maintenant, recliquez sur le bouton 1 puis sur le bouton 2 sans attendre les 10 secondes. Vous remarquerez que le "ok" du bouton 1 s'affiche sans avoir attendu la fin du setTimeout. J'ai donc constaté deux problèmes :
- La variable autorisation ne passe pas à FALSE tant que la fonction n'est pas finie : c'est pourquoi le fait d'appuyer sur le bouton 2 redéclenche la fonction alors que le test "if(autorisation)" aurait dû l'en empêcher
- Ensuite, comme déjà dit, le "setTimeout" du premier bouton est coupé puisqu'il affiche directement le "ok" alors qu'il attendre la fin du délai ...
Voyez-vous comment résoudre ce problème??? J'ai beau triturer le code dans tous les sens, rien à faire ... :(
Merci de votre aide.
A bientôt.