Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Prototype & Script.aculo.us
Prototype & Script.aculo.us Forum d'entraide sur les frameworks Prototype et Script.aculo.us
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/07/2011, 23h31   #1
Membre du Club
 
Inscription : janvier 2010
Messages : 210
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : janvier 2010
Messages : 210
Points : 53
Points : 53
Par défaut Effect.toggle et Element.visible

Bonjour,

Je souhaite afficher/masquer une DIV en alternant en outre le texte qui appelle l'affichage et le masquage : le texte "afficher" si la DIV est masquée (par défaut) ou le texte "masquer" si la DIV est affichée.
Mais le code suivant n'est pas fonctionnel (la librairie Prototype et Scripaculous sont bien appelées dans le head) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<p id="affichage"  style="cursor: pointer;" 
onClick="Effect.toggle('menu', 'blind', { duration: 2.0, afterFinish: function(){
  if(Element.visible('menu')() ) {
   Element.update("affichage","masquer");
  } else {
   Element.update("affichage","afficher");
  }
} });"></p>
 
 
	<div id="menu">...</div>
Je précise que je suis débutant. En quoi ma façon de procéder est-elle incorrecte ? Vu la coloration syntaxique, il y a visiblement des erreurs au niveau de syntaxe. Merci de votre aide.
almoha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 10h35   #2
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 686
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 686
Points : 5 756
Points : 5 756
Bonjour,

Effectivement, il y a un mélange de quottes et doubles quottes. Essayez ceci :

Code :
1
2
3
4
5
6
7
8
9
 
<p id="affichage"  style="cursor: pointer;" 
onClick="Effect.toggle('menu', 'blind', { duration: 2.0, afterFinish: function(){
  if(Element.visible('menu')() ) {
   Element.update(\"affichage\",\"masquer\");
  } else {
   Element.update(\"affichage\",\"afficher\");
  }
} });"></p>
Veillez toujours bien à ne pas fermer une chaines prématurément. Pour éviter ce mélange de quottes, le mieux reste de sortir la fonction du code HTML :

Code html :
<p id="affichage"  style="cursor: pointer;" onClick="ma_fonction();"></p>

Code :
1
2
3
4
5
6
7
8
9
10
11
 
function ma_fonction()
{
   Effect.toggle('menu', 'blind', { duration: 2.0, afterFinish: function(){
       if(Element.visible('menu')() ) {
          Element.update("affichage","masquer");
       } else {
          Element.update("affichage","afficher");
       }
   } });
}
Bon maintenant ce n'est peut-être pas suffisant car je ne connais pas le framework ni la fonction Element.update.
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/07/2011, 11h09   #3
Membre du Club
 
Inscription : janvier 2010
Messages : 210
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : janvier 2010
Messages : 210
Points : 53
Points : 53
Merci beaucoup pour votre réponse. J'ai suivi votre conseil d'externaliser la fonction et cela marche . J'ai juste supprimé la double parenthèse en trop à la ligne 5 de la fonction. Merci encore.
almoha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h28.


 
 
 
 
Partenaires

Hébergement Web