Aller au contenu

Sujets conseillés

Posté (modifié)

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
  • 1 month later...
Posté (modifié)

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
Posté

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

  • 2 semaines plus tard...
Posté

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.

Veuillez vous connecter pour commenter

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



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