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 :

[JS] Pb avec menu déroulant - cf. 4e post


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 80
    Points
    80
    Par défaut [JS] Pb avec menu déroulant - cf. 4e post
    Bonjour,

    Je ne connais que très peu le JS. Cependant, en voulant créer un album photo, j'ai copié deux fonctions. L'une pour le menu déroulant et l'autre pour la galerie photos (extrait du code xhtml) :
    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
    <script type="text/javascript"><!--
    function affiche(id) { 
    	for (var i = 1; i<=4; i++) {
    		if (document.getElementById('ssmenu'+i)) {
    			document.getElementById('ssmenu'+i).style.display='none';
    		} 
    	}
    	if (document.getElementById(id)) {
    		document.getElementById(id).style.display='block';
    	} 
    }
    function display_img() {
    	var bascule = document.getElementById('galerie');
    	var links = bascule.getElementsByTagName('a');
    	var big_photo = document.getElementById('img_orig');
    	var titre_photo = document.getElementsByTagName('div')[0];
    	for (var i = 0 ; i < links.length ; ++i) {
    		links[i].onclick = function() {
    			big_photo.src = this.href;
    			big_photo.alt = this.alt;
    			big_photo.title = this.title;
    			titre_photo.firstChild.nodeValue = this.title;
    			return false;
    		};
    	} 
    }
    window.onload = function () {  display_img(); affiche(id); }
    --></script>
    La fonction display_img permet d'afficher en grand (toujours sur le même espace) les petites photos.
    La fonction affiche me permet de gérer le menu déroulant.

    En fait, les deux fonctions ne cohabitent pas ensemble. Si je mets "affiche" avant "display_img", l'album photo ne marche pas. Et inversement.

    Est-ce que qq un peut m'aiguiller pour que les deux fonctions puissent fonctionner en même temps ?

    D'avance merci !!

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Essaie comme ça :

    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    window.onload = function () {  display_img; affiche; }

    Et mets ce code avant la déclaration de tes fonctions.

  3. #3
    Membre régulier Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par BisounoursJos
    Essaie comme ça :

    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    window.onload = function () {  display_img; affiche; }

    Et mets ce code avant la déclaration de tes fonctions.
    Du coup, la galerie ne marche pas...

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    bonjour,

    essaye voir comme ceci :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="display_img(); affiche(null);">

    par contre
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var bascule = document.getElementById('galerie');
    var links = bascule.getElementsByTagName('a');
    Je crois que getElementsByTagName est inconnue de Firefox

  5. #5
    Membre régulier Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 80
    Points
    80
    Par défaut
    NICKEL !!!

    Super !!! Ca marche !!

    Mais pourquoi le ?

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    La fonction affiche prend un paramètre, visiblement l'id du menu à afficher. En faisaint affiche() quelle est la valeur du paramètre que tu transmets ? Tandis que affiche(null), là tu es sûr de ce que tu envois.

    C'est, entre autres, pour cette raison que je n'apprécie pas trop les syntaxes du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.onload = fonction
    et que je préfère l'appel directement dans le code HTML.

    Ceci dit je vais reprendre la réponse de BisounoursJos et la complèter. As-tu essayé ce code :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.onload = function () {display_img(); affiche(null);}

  7. #7
    Membre régulier Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 80
    Points
    80
    Par défaut
    Ok. Les deux fonctions cohabitent maintenant !!!

    Par contre, y a un dernier truc qui me chagrine. Avec mon javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function affiche(id) { 
    	for (var i = 1; i<=4; i++) {
    		if (document.getElementById('ssmenu'+i)) {
    			document.getElementById('ssmenu'+i).style.display='none';
    		} 
    	}
    	if (document.getElementById(id)) {
    		document.getElementById(id).style.display='block';
    	} 
    }
    Même si je l'utilise seul, lorsque je charge ma page (sous IE et Firefox) tant que celle-ci n'est pas chargée totalement, je vois l'ensemble de mes menus...

    Est-ce normal ?

    Si non, qq un aurait-il une piste de pourquoi ça fait ça ?

Discussions similaires

  1. bouton avec menu déroulant dans la tool bar.
    Par archerhawke dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 27/10/2009, 19h50
  2. [VBA-E]{débutant} Importation de données avec menu déroulant
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 27/04/2007, 17h02
  3. [PHP-JS] erreur 404 avec menu déroulant
    Par midiweb dans le forum Langage
    Réponses: 5
    Dernier message: 15/02/2007, 15h56
  4. Problème avec menu déroulants
    Par davinout dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/04/2006, 19h33
  5. [CSS] petit problème avec menu déroulant et frame
    Par SylvainB dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 14/02/2006, 14h54

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