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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : octobre 2006
    Messages : 267
    Points : 200
    Points
    200

    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 régulier
    Profil pro
    Inscrit en
    mai 2010
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2010
    Messages : 153
    Points : 105
    Points
    105

    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
    5 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

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

    Informations forums :
    Inscription : février 2009
    Messages : 5 673
    Points : 20 974
    Points
    20 974
    Billets dans le blog
    38

    Par défaut

    Pas : var edition = setInterval(false, 0); !

    Mais : var edition = null;

    Blog



    Nota bene : si vous devez être compatible avec les navigateurs obsolètes (IE8 et plus), vous devez convertir les codes ES2015 en ES5 avec Babel.

    FAQ JS Tutoriels JS

    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
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : octobre 2006
    Messages : 267
    Points : 200
    Points
    200

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