Bloquer un setTimeout [Résolu]

cs_ov3rdoze 414 Messages postés lundi 19 juillet 2004Date d'inscription 23 septembre 2014 Dernière intervention - 3 juil. 2008 à 10:25 - Dernière réponse : cs_ov3rdoze 414 Messages postés lundi 19 juillet 2004Date d'inscription 23 septembre 2014 Dernière intervention
- 3 juil. 2008 à 10:55
Salut à tous

J'essaye de faire une galerie photo avec un diaporama. Tout fonctionne mais j'ai un problème dans un cas particulier : Si on arrete le diaporama puis qu'on le relance, on dirait que 2 setTimeout sont lancés.
Pour essayer d'être plus clair, normalement on change d'image toutes les 3 secondes. Après avoir arrété puis relancé (selon à quel moment on relance), j'ai par exemple la première image qui reste 2 secondes, la deuxième 1 seconde, la troisième 2 secondes, etc. On dirait que le premier Timeout continue à tourner. Pourtant tant que l'on ne relance pas le diaporama après avoir arrêté, ça ne change pas d'image.
Voila mon code :

function play () {
    if (lecture) {
        stopDiaporama ();
    } else {
        lecture = true;
        setTimeout ("diaporama ()", 1200);
    }
}


function diaporama () {
    if (lecture) {
        suivant ();
        setTimeout ("diaporama ()", 3000); 
    }
}


function stopDiaporama () {
    lecture = false;
}

La fonction play() lance ou arrete le diaporama. Elle est appelée quand on clique sur le bouton Lecture/Pause.
La fonction suivant() affiche l'image suivante.

Esct-ce qu'il est possible que le premier Timeout continue à tourner? Et dans ce cas est-il possible de l'arrêter?

Merci d'avance
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 3 juil. 2008 à 10:33
3
Merci
Bonjour,

>>Esct-ce qu'il est possible que le premier Timeout continue à tourner? Et
tant qu'on ne l'arrête pas

>>est-il possible de l'arrêter?
t'as du bol ;o)     oui :

var timid=setTimeout(....                         lancement
...
window.clearTimeout(timid);                   
arret

comme setInterval et clearInterval

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]

Merci cs_bultez 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de cs_bultez
cs_ov3rdoze 414 Messages postés lundi 19 juillet 2004Date d'inscription 23 septembre 2014 Dernière intervention - 3 juil. 2008 à 10:40
0
Merci
Nickel tout fonctionne.

Je ne connaissais pas setInterval (qui semble plus approprié). Certains site le déconseille et disent d'utiliser plutôt setTimeout. Il pose vraiment des problèmes ou bien c'est seulement avec les navigateurs plus que dépassés?

En tout cas merci pour ta réponse
Commenter la réponse de cs_ov3rdoze
cs_ov3rdoze 414 Messages postés lundi 19 juillet 2004Date d'inscription 23 septembre 2014 Dernière intervention - 3 juil. 2008 à 10:40
0
Merci
Désolé pour l'orthographe je m'en suis aperçu trop tard
Commenter la réponse de cs_ov3rdoze
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 3 juil. 2008 à 10:49
0
Merci
il faut se méfier des recommandations de tel ou tel site !
là franchement, moi je n'en ai aucune idée.
setTimeout il faut relancer, setInterval non.   c'est tout ce que je sais ;o)

pour l'ortografe j'ai la barre d'outils google, et je ne pense que rarement
à lancer le correcteur orthographqiue ! qu'est-ce qu'il faut tenir quand même !

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
cs_ov3rdoze 414 Messages postés lundi 19 juillet 2004Date d'inscription 23 septembre 2014 Dernière intervention - 3 juil. 2008 à 10:55
0
Merci
>>il faut se méfier des recommandations de tel ou tel site
C'est pour ça que je demande si il y a quelqu'un qui a eu des problèmes avec ;)

De toute façon je crois que je vais laisser mon code comme il est, puisque tout fonctionne. Mais je le saurai pour la prochaine fois...

Encore merci
Commenter la réponse de cs_ov3rdoze

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.