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 :

arreter une boucle


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut arreter une boucle
    hello !

    J'ai un petit soucis j'utilise du javascript pour afficher une infobulle animée ( apparition en opacité et en jouant sur le height), tout fonctionne : une fonction appelée par onmouseover et une qui remet tout à zero avec un appel par onmouseout. Le probleme est que si je fais un mouseout avant que ma premiere fonction ne se soit terminée, ca bloque. pas top.

    Il faudrait que dans la fonction cache() que je "casse" la boucle ou que je stoppe le setTimeout de la fonction montre() avec un cleartimeout mais je ne sais pas comment faire.

    voilà mes 2 fonction qui me pose probleme : (ce n'est qu'une partie du code mais c'est vraiment sur ces 2 là qu'il faut résoudre le problème) :
    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
     
    function montre(opacStart, opacEnd, millisec,text) {
        var speed = Math.round(millisec / 100);
        var timer = 0;
    	if(opacStart < opacEnd) {
            for(i = opacStart; i <= opacEnd; i++)
                {
                setTimeout("changeOpac(" + i + ",'" + text + "')",(timer * speed));
                timer++;bulle=true;
            }
        }
    }
     
     
    /*c'est cette fonction qui doit arreter la premiere sur un onmouseout*/
    function cache() {
    changeOpac(0, '');
    bulle=false;
    }

    thanx pour vos lumières !

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Salut
    pour casser une boucle ou une instruction ( switch par exemple ) il faut utiliser le mot clé "break"
    bon courage pour la suite

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    yes je pensais aussi à break, mais mon soucis c'est comment "breaker" la premiere fonction à partir de la deuxieme ?

    thanx a lot

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    ha okip ^^
    alors je ferais comme ça :

    tu déclare une variable globale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var monTimeOut = null
    ensuite sur ta boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monTimeOut  = setTimeout("changeOpac(" + i + ",'" + text + "')",(timer * speed));
    et dans ta fonction cache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function cache() {
    clearTimeout(monTimeOut);
    bulle=false;
    }
    voila mais je pense que tu aurais pu utiliser quelques ligne de code en moins , cherche sur ce forum "opacité progressive"
    bon courage

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    mmmmm j'avais deja essayé ca, c'est ce qui se fait habituellement. J'aurais du le dire désolé ....

    mais ca n'y change rien. J'ai mis un temps super long pour test. quand je fais mon mouseout, ben l'anime continue.... ca "clear" pas du tout, la boucle continue jusqu'a la fin.

    chié....j vois pas pourquoi ca marche pas. je suis dégouté.

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Regarde du coté de ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function x() {
      // Arrête cette fonction dans 100ms
      setTimeout(y, 100);
      x.canRun=true;
      while(x.canRun && anotherThingToTest) {
        // Do something
      }
    }
     
    function y() {
      x.canRun=false
      // Do something else
    }

Discussions similaires

  1. [Débutant] arreter une boucle à une condition
    Par manon.net dans le forum C#
    Réponses: 7
    Dernier message: 08/10/2011, 21h14
  2. Arreter une boucle à une heure précise
    Par SandrillonC dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2010, 12h19
  3. [Débutant]Arreter une boucle while.
    Par kobalt02 dans le forum LabVIEW
    Réponses: 7
    Dernier message: 03/07/2009, 10h25
  4. programmer un bouton pour arreter une boucle
    Par yassine.khe dans le forum Débuter
    Réponses: 2
    Dernier message: 25/05/2009, 10h59
  5. Instruction pour arreter une boucle infinie
    Par pitizone dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/03/2007, 14h42

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