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

jQuery Discussion :

Arrêter function setInterval


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 149
    Par défaut Arrêter function setInterval
    Bonjour à tous,
    Je suis en train de faire joujou avec jQuery à partir d'un tuto que j'ai trouvé:
    http://www.css3create.com/Barre-de-p...HTML5-progress

    C'est une barre de chargement en CSS+jQuery.

    Mais je n'arrive pas à arrêter le setInterval lorsque le chargement est à 100%.

    Voici le code que j'ai modifié (mais qui ne marche pas):
    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
     
    $(document).ready(function(){
     
    function modifValues(){ var val = $('#progress progress').attr('value'); if(val>=100){return true;}
     else
     {
      var newVal = val*1+0.25;
      var txt = Math.floor(newVal)+'%';
      $('#progress progress').attr('value',newVal).text(txt);
      $('#progress strong').html(txt);
     }
    }
     
    var tend = setInterval(function(){ modifValues(); },40);
     
    if(tend == true)
    {
    	alert('true');
    }
     
    });
    Ici lorsque la valeur atteint 100% je devrai avoir un alert mais il ne se passe rien.
    Si quelqu'un pouvait m'éclairer là-dessus se serait gentil.

    Merci d'avance !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tout d'abord, puisque ta fonction de rappel ne demande pas d'arguments, tu peux écrire plus simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tend = setInterval(modifValues,40);
    Sinon, pour ta question :
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 149
    Par défaut
    Je te remercie de ta réponse Bovino, je ne connaissais pas (encore) clearinterval.

    Cependant j'ai toujours un soucis avec cette fonction.
    Dans la théorie lorsque "val" atteint 100, ma fonction doit retourner "true".
    Et lors de mon test si "tend" vaut true alors je place mon clearInterval.
    Mais bizarrement la condition ne s'effectue pas...
    As-tu une idée là-dessus?

    EDIT: en procédant avec un alert de mon "tend" je m'aperçois qu'il vaut "2".
    Chose étrange car il devrait me retourner un true ou un false (que j'ai placé dans mon else pendant mon test)

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    tend est l'identifiant lié au setInterval, il ne vaut donc pas true mais une valeur numérique fixe.
    Ensuite, c'est dans la fonction de rappel qu'il faut faire le clearInterval() si tu as atteins 100.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 149
    Par défaut
    Effectivement, je ne savais pas que setInterval donnait un ID.
    Je sais que je dévie du sujet de base mais mon problème subsiste toujours.
    Lorsque val atteint la valeur 100 je mets mon clearInterval(tend).
    Au passage dans ma fonction je retourne un true pour faire un test. Mais bizarrement ce true ne vient jamais.
    Saurais-tu pourquoi?

    Voici le code:
    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
    $(document).ready(function(){
     
    function modifValues(){ var val = $('#progress progress').attr('value'); if(val>=100){clearInterval(tend);return true;}
     else
     {
      var newVal = val*1+0.25;
      var txt = Math.floor(newVal)+'%';
      $('#progress progress').attr('value',newVal).text(txt);
      $('#progress strong').html(txt);
     }
    }
     
    var tend = setInterval(function(){ modifValues },40);
    var test = modifValues(); 
     
    if(test == true)
    {
    	alert('true');
    }
     
    });

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    Citation Envoyé par Friksstyle Voir le message
    Au passage dans ma fonction je retourne un true pour faire un test. Mais bizarrement ce true ne vient jamais.
    comment peux tu en être sûr?

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

Discussions similaires

  1. Arrêter une série de setInterval avec clearInterval
    Par Feno59 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 26/09/2014, 16h19
  2. Arrêter / Redémarrer un setInterval
    Par Marine31 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/04/2014, 16h22
  3. Arrêter un setInterval suivant la valeur retourné par la fonction
    Par ranell dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 30/07/2010, 15h43
  4. [Dev c++ 4] implicite declaration of function "int kbhi
    Par Torpedox dans le forum Dev-C++
    Réponses: 5
    Dernier message: 01/01/2003, 13h37
  5. Arrêter un prog si temps de connexion trop long
    Par jakouz dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2002, 18h28

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