Aller au contenu

Javascript - Soucis de SetTimeout


Nazario

Sujets conseillés

Salut, je souhaite faire clignoter les bordures d'un champ non remplis dans un formulaire. Il se trouve que le SetTimeout soit mauvais puisqu'il faut que je reclique sur le boutton pour que la couleur change et pour que l'action reprends.

Le code est le suivant:

function check_forum() {
if(!document.forum.sujet.value) {
setTimeout(clign(document.forum.sujet),1000);
}
}
var i=0;
function clign(eh) {
if(i < 5) {
 i++;
 if((i == 1)||(i == 3)||(i == 5)) { eh.style.border='solid 1px #000000'; }
 if((i == 2)||(i == 4)) { eh.style.border='solid 1px #C0C0C0'; }
}
}

L'action débute quand je clique sur le boutton (onclick='check_forum();').

Ma question est la suivante:

Comment éviter de rappuyez sur le boutton pour que la 'function' continue à s'éxecuter (1 fois par seconde, 5 fois) ?

Merci, à bientôt.

Modifié par Nazario
Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Slt, c'est parce que le setTimeout n'exécute qu'une seule fois la function, il faudrait mettre:

var i=0;

function check_forum() {
 if(!document.forum.sujet.value) {
   clign(document.forum.sujet,i);
 }
}

function clign(eh,i) {
 if(i < 5) {
   i++;
   if((i == 1)||(i == 3)||(i == 5)) { eh.style.border='solid 1px #000000'; }
   if((i == 2)||(i == 4)) { eh.style.border='solid 1px #C0C0C0'; }
   setTimeout(clign(document.forum.sujet,i),1000);
 }
}

:D

Modifié par Dnegel666
Lien vers le commentaire
Partager sur d’autres sites

Ou alors utiliser setInterval qui va appeler de façon régulière une fonction.

mon_timer = setInterval("mafonction()",1000);

Va appeller mafonction() toutes les secondes.

Pour l'arrêter :

clearInterval(mon_timer);

Et vala...

Antoine

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

Il faut utiliser setInterval pour lancer une fonction à interval fixe.

Et ne pas oublier de libérer l'identifiant du setInterval

SeTimeOUt permet juste de lancer une fonction en différée, au bout d'une certain nb de millisecondes.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...