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 :

Impossibilité de stopper un setInterval


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Points : 204
    Points
    204
    Par défaut Impossibilité de stopper un setInterval
    Bonjour à tous,

    Je cherche à déclencher une fonction qui fait changer le titre de ma page grâce à setInterval et au bout d'un temps donné à l'arrêter. Pour que vous ayez toutes les infos, je précise que la page n'est chargée qu'une fois et que le reste de son contenu est rechargé via ajax et d'autres setInterval.
    Voici les portions de code impliquées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    var edition = setInterval(false, 0);
     
    function reloadComment()
                {
                    $.ajax({
                        type: "POST",
                        url: 'ajax/outilTp.ajax.php',
                        dataType: 'json',
                        data: {
                            action: 'rafraichir_commentaire'
                        },
                        success: function (response) {
                            if(response.MOD == '1' && response.BL_EN_EDITION == '2'){
                                startClignote();
                            }
                            if(response.MOD == '3'){
                                stopClignote();// histoire d'être sûr!  
                            }
                            if($('div#commentaire_sup').html()!=response.TEXTE_COMMENTAIRE) {
                                $('div#commentaire_sup').html(response.TEXTE_COMMENTAIRE);
                            }
                        },
                        error: function (xml, err) {
                        }
                    });
                }
    function titreClignote(){
                    if(document.title == "Changement - EVENEMENTS"){
                        document.title = "nouveau commentaire";
                    }
                    else {
                        document.title = "Changement - EVENEMENTS";
                    } 
                }
                function startClignote(){
                    edition = setInterval(titreClignote, 2000);
                    setTimeout(stopClignote, 900000);
                }
                function stopClignote(){
                    clearInterval(edition);
                    document.title = "Changement - EVENEMENTS";
                }
    Par ailleurs, je précise que je n'ai pas de problème de réception des informations JSON en ajax, celles-ci sont bien envoyées. (MOD=1 ou MOD=3 et BL_EN_EDITION=2...)
    Je pense qu'il s'agit d'un problème de scope, mais je ne trouve pas comment.
    Pouvez-vous m'éclairer ?
    Merci
    "n'imprimez ces messages que si nécessaire... Préservez notre planète"

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Je n'ai pas testé, mais le principe suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function startClignote(){
        var edition = setInterval(titreClignote, 2000);
        setTimeout(function(interval){
            clearInterval(interval);
        }, 900000, edition);
    }
    Tu n'as plus besoin de ta fonction stopClignote

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Pas : var edition = setInterval(false, 0); !

    Mais : var edition = null;

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre actif Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Points : 204
    Points
    204
    Par défaut merci
    Merci pour ces réponses,

    C'était tout bête... (comme souvent)
    Effectivement passer en global et en valeur null ma varaiable edition.
    Par ailleurs, je fais un contrôle sur la valeur d'edition et tout marche nickel.
    "n'imprimez ces messages que si nécessaire... Préservez notre planète"

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

Discussions similaires

  1. Comment deux setInterval peuvent se stopper alternativement ?
    Par progdebutant dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/01/2016, 14h54
  2. Comment stopper un setInterval() ?
    Par lerieure dans le forum jQuery
    Réponses: 2
    Dernier message: 27/10/2012, 17h52
  3. [NVidia] Démarrer ou stopper sortie Tv
    Par nico-21 dans le forum DirectX
    Réponses: 2
    Dernier message: 31/05/2004, 11h59
  4. [flash MX] probleme avec setinterval et clearinterval
    Par yacinechaouche dans le forum Flash
    Réponses: 3
    Dernier message: 15/04/2004, 12h07
  5. Stopper la répétition du clavier
    Par Chris89 dans le forum Assembleur
    Réponses: 6
    Dernier message: 17/10/2003, 20h53

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