Question d' un internaute
J' ai besoin de lancer une opération après un temps défini, avez-vous une solution? Faire une boucle qui calcule le temps écoulé? Merci d' avance
Bernard
Solution proposée
Une boucle qui calculerait le temps écoulé n' est pas vraiment la solution, car elle bloque pratiquement toutes les fonctions de la page.
Il existe une fonction qui s' occupe de ce type d' action :
setTimeout("commande",temps);
commande est le code à exécuter.
temps indique le temps après lequel la commande sera exécutée.
L' annulation de la commande peut être effectuée par clearTimeout();
Il faut passer en paramètre une variable qui pointe vers le setTimeout().
Dans notre exemple il s' agit de a.
Si vous avez besoin d'éffectuer une opération à intervalle régulier, il faut utiliser :
setInterval("commande",temps);
commande est le code à exécuter.
temps est le temps après lequel la commande sera exécutée.
Vous constaterez qu 'elle obéit aux mêmes règles que setTimeout.
Pour suspendre la commande : clearInterval();
Il faut passer en paramètre une variable qui pointe vers le setInterval().
Dans notre exemple il s' agit de b.
Les exemples
Afficher le message dans 2 secondes
Afficher le message dans 4 secondes
Empecher l'affichage
Afficher le message toutes les 4 secondes
Empecher la répétition
Le code :
<HTML>
<head>
<script>
<!--
function Attendre(Duree)
{
string="Affiche("+Duree+");";
a = setTimeout(string,Duree);
}
function Affiche(Duree)
{
alert(Duree/1000+" seconds se sont écoulées");
}
function Annule()
{
clearTimeout(a);
alert("Le message ne viendra pas");
}
function Repete(Duree)
{
string="alert('Hello');";
b = setInterval(string,Duree);
}
function Interrompre()
{
clearTimeout(b);
}
// -->
</script>
</HEAD>
<BODY>
<a href="javascript:void()" onClick="Attendre(2000);">
Afficher le message dans 2 secondes
</a><BR>
<BR>
<a href="javascript:void()" onClick="Attendre(4000);">
Afficher le message dans 4 secondes
</a>
<BR>
<a href="javascript:void(0)" onClick="Repete(4000)"; >
Afficher le message toutes les 4 secondes
</a>
<br>
<a href="javascript:void(0)" onClick="Interrompre()"; >
Empecher la répétition
</a>
<br>
</BODY>
</HTML>
Sources ZIP