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 :

Enchainement de fonctions


Sujet :

JavaScript

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Par défaut Enchainement de fonctions
    Bonjour,

    J'ai un soucis sur des fonctions javascript. Le but est de faire lever un rideau (style théatre) pour faire apparaitre des informations (sur un groupe de musique). Lors de l'arrivée sur la page le rideau est fermé. Un clic sur un lien groupe ouvre le rideau et dévoile les infos du groupe. Un clic sur un autre groupe ferme, modifie les infos et réouvre le rideau. Mais ca ne s'enchaine pas comme ca. Pour l'arrivée c'est ok, mais dès le 2ème lien, le rideau s'ouvre avant de se fermer. Je ne comprends pas pourquoi, j'ai peut être trop le nez dessus pour voir l'évidence mais je suis déjà la dessus depuis plusieurs heures d'ou l'appel à vos lumières :

    Le code JS :
    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
    44
    <script type="text/javascript">
    	var down=1;
     
    	function closeCurtain(i)
    	{
    		if (i <= 180) 
    		{
    			document.getElementById("curtain").style.height=60+i+'px';
    			i=i+3;
    			setTimeout('closeCurtain(' + i +')', 1);
    		}
    		else
    		{
    			down=1;
    		}
    	}
     
    	function openCurtain(i)
    	{	
    		if (i < 180) 
    		{
    			document.getElementById("curtain").style.height=240-i+'px';
    			i=i+3;
    			setTimeout('openCurtain(' + i +')', 1);
    		}
    		else
    		{
    			down=0;
    		}
    	}
     
    	function writeGroupeInf()
    	{	
    		if (down==0)
    		{
    			closeCurtain(0);
    		}
    		// changement des infos du groupe
                    // changeGroupeInf();
     
                    openCurtain(0);
    		return false;
    	}
    </script>
    Le lien HTML d'un groupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <A HREF="" onClick="writeGroupeInf(); return false;">Un groupe</A>
    Merci d'avance

    Eric

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Par défaut
    Bonsoir, si je comprends bien dans la fonction openCurtain tu attends que i> 180 pour mettre down à 0. jusque là ok.

    Tu appel la fonction writeGroupeInf pour fermer puis ouvrir le rideau. Donc pour moi la fermeture du rideau est systematique. Je ne comprends pas pourquoi tu demande de verifier down pour fermer le rideau puisqu'il était déjà ouvert. en fait ta fonction est décalé par rapport à ta scéne.

    quand tu affiche la page tu devrais lancer openCurtain seul pour qu'il ouvre le rideau. ensuite tu pourras enchainer avec ta fonction writeGroupeInf() en cliquant sur un lien( mais sans ta condition).

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Par défaut
    Merci pour cette réponse. En fait à l'arrivée sur la page, le rideau est fermé. Au premier clic, il faut donc simplement l'ouvrir. A partir du second clic, je souhaite le fermer, modifier les infos du groupe, et le réouvrir, c'est pour ca que j'ai mis cet espèce de booléen. Mon gros problème c'est qu'à l'écran, c'est la fonction d'ouverture qui s'exécute avant la fermeture. Si je mets un délais entre l'exécution de fermeture et celle d'ouverture, j'arrive à régler la tempo pour bien voir les 2, sauf que FX et IE n'ont pas la même vitesse d'exécution donc c'est peu satisfaisant. Je pensais que le code était linéaire, ie, qu'une ligne de code ne s'exécutait que quand la précédente était achevée ce qui n'est visiblement pas le cas.
    Vous pouvez observer le mauvais comportement du rideau à l'adresse : http://www.lebonair.free-hosting.fr/New/groupes.php
    Beaucoup de choses à faire encore mais je bute sur ce rideau.
    J'avais également essayé de rajouter un
    while (down==0)
    {}
    avant l'exécution de l'ouverture mais cet évènement ne se produit jamais malgré le down=1 en fin de fermeture. Je me demande si tout cela n'est pas du à la récursivité. Et pour une fois pas de jaloux, c'est KO autant sur IE que FX.

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <A HREF="javascript:writeGroupeInf(); return false;">Un groupe</A>
    ?

Discussions similaires

  1. Enchainement de fonctions javascript
    Par aku84 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 04/03/2011, 05h37
  2. [MySQL] Pb sur enchainement de fonction
    Par moustika dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/10/2010, 17h39
  3. [Batch] Enchainement de fonctions del et copy
    Par Marosh dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 29/03/2010, 16h13
  4. Enchainement de fonction.
    Par intelcore dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/08/2007, 13h15
  5. Enchainer des fonctions dans un onclick d'un bouton
    Par jpg dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/10/2004, 16h51

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