IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Stopper plusieurs setTimeout


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut Stopper plusieurs setTimeout
    Bonjour à tous,

    Je récupère en XML (via $.get() de jquery ) une valeur en seconde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <countdown>17</countdown>

    J'utilise ensuite une condition qui me permet de renvoyer la valeur XML trouvée vers une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($(data).find("countdown").text() != ''){
    load($(data).find("countdown").text());
    }
    Voici la fonction qui lance le setTimeout() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function load(valeur){
     
    var ms=(parseInt(valeur))*1000;
     
    var countdown=setTimeout(function(){
    alert('STOP');
    },ms);
     
    }
    Ainsi, lorsque le compte à rebours arrive à sa fin j'ai un message d'alerte.

    Mon problème est le suivant :

    Il arrive que plusieurs compte à rebours soient récupérés par XML (c'est tout à fait normal pour l'utilisation que j'en fais) mais j'aimerais pouvoir, en appuyant sur un bouton par exemple, arrêter tout les compte à rebours lancés.

    Je ne trouve pas la fonction ! J'ai essayé avec cleartimeout(countdown) mais ça ne me stoppe pas tout les compte à rebours...

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    à partir d'ou essayes tu de faire le clearTimout ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Bah j'ai essayé plein de chose sans jamais réussir, as tu une solution ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Bon,

    Finalement, la solution est de démarrer les setTimeout en les insérant dans un array() puis après, de vider ce array.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var timeouts = [];
     
    function countdown(temps){
    timeouts.push(setTimeout(function(){alert('ok')}, temps));
    }
     
    function clear(){
    for(var i=0; i<timeouts.length; i++) clearTimeout(timeouts[i]);
    timeouts = []; 
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CSS 3] Stopper plusieurs @Keyframes en même temps
    Par Antamagui dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 12/12/2013, 12h55
  2. manipuler plusieurs setTimeout
    Par progweb dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/03/2013, 19h05
  3. Stopper plusieurs services
    Par PAB/31/SAB dans le forum VBScript
    Réponses: 1
    Dernier message: 24/10/2011, 14h28
  4. Stopper plusieurs macros imbriquées
    Par Fr33dom dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/02/2010, 09h02
  5. Stopper un setTimeout
    Par dragonfly dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/05/2007, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo