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 :

Accéder à des éléments


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de jbidou88
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    493
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 493
    Points : 242
    Points
    242
    Par défaut Accéder à des éléments
    Bonjour,

    Je souhaite afficher des éléments dd d'un sous-menu à l'aide de javascript mais je n'arrive pas à les sélectionner. 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
    	    <div id="menu">
    		    <dl>
    		    	<dt><a href="#">Accueil</a>
    		    		<dd><a href="a">Sous-menu 1-1</a></dd>
    		    		<dd><a href="a">Sous-menu 1-2</a></dd>
    		    		<dd><a href="a">Sous-menu 1-3</a></dd>
    		    	</dt>
    		    	<dt><a href="#">Exercices</a>
    		    		<dd><a href="a">Sous-menu 2-1</a></dd>
    		    		<dd><a href="a">Sous-menu 2-2</a></dd>
    		    		<dd><a href="a">Sous-menu 2-3</a></dd>
    		    	</dt>
    		    	<dt><a href="#">Documentations</a>
    		    		<dd><a href="a">Sous-menu 3-1</a></dd>
    		    		<dd><a href="a">Sous-menu 3-2</a></dd>
    		    		<dd><a href="a">Sous-menu 3-3</a></dd>
     
    		    	</dt>
    		    </dl>
    	    </div>
    Et 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
    function addEventMenu () {
    	var menu = document.getElementById('menu');
    	var menuPrincipal = menu.getElementsByTagName('dt');
    	for(var i=0; menuPrincipal.length>i; i++) {
    		menuPrincipal[i].onmouseover = function () {
    			showMenu(this);
    		};
    	}
    }
     
    function showMenu(elementMenu) {
    	alert(elementMenu);
    	var sousMenu = elementMenu.getElementsByTagName('dd');
    	for(var i=0; sousMenu.length>i; i++) {
    		sousMenu[i].style.display = 'block';
    	}
    }
    Je n'arrive pas à sélectionner les éléments dd qui se trouvent sous elementMenu (dt) avec le hover. J'ai essayé plusieurs façons mais sans succès. Avez-vous une piste ?

    Merci pour votre aide

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 048
    Points : 44 562
    Points
    44 562
    Par défaut
    Bonjour,
    il s'agit plus d'une méconnaissance des balises DL, DT et DD qu'autre chose :
    DL est parent de DT et de DD mais DT est frère, et non parent, de DD, donc getElementsByTagName('DD') retournera toujours une nodeList vide.

    Les listes de définitions : mal utilisées ou mal comprises ?

  3. #3
    Membre actif Avatar de jbidou88
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    493
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 493
    Points : 242
    Points
    242
    Par défaut
    Merci pour cette réponse, effectivement j'ai remplacé bêtement mes ul li avec les dl, dd et dt. La balise dt doit se fermer avant. Voici mon nouveau code html :
    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
    <dl>
    		    	<dt><a href="#">Accueil</a></dt>
    		   		<dd><a href="a">Sous-menu 1-1</a></dd>
    		   		<dd><a href="a">Sous-menu 1-2</a></dd>
    		   		<dd><a href="a">Sous-menu 1-3</a></dd>
     
    		    	<dt><a href="#">Exercices</a></dt>
    		   		<dd><a href="a">Sous-menu 2-1</a></dd>
    		    	<dd><a href="a">Sous-menu 2-2</a></dd>
    		    	<dd><a href="a">Sous-menu 2-3</a></dd>
     
    		    	<dt><a href="#">Documentations</a></dt>
    		    	<dd><a href="a">Sous-menu 3-1</a></dd>
    		    	<dd><a href="a">Sous-menu 3-2</a></dd>
    		   		<dd><a href="a">Sous-menu 3-3</a></dd>
    		    </dl>
    Et pour accéder aux éléments dd, j'utilise la manière suivante :
    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 addEventMenu () {
    	var menu = document.getElementById('menu');
    	var menuPrincipal = menu.getElementsByTagName('dt');
    	for(var i=0; menuPrincipal.length>i; i++) {
    		menuPrincipal[i].onmouseover = function () {
    			showMenu(this);
    		};
    	}
    }
     
    function showMenu(elementMenu) {
    	var elementMenu = elementMenu.nextSibling;
    	while (elementMenu != null && elementMenu.nodeName != 'DT') {
    		if(elementMenu.nodeName == 'DD') {
    			elementMenu.style.display = 'block';
    		}
    		var elementMenu = elementMenu.nextSibling;
    	}
    }
    Merci encore pour l'aide

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

Discussions similaires

  1. Accéder aux valeurs des éléments d'une matrice
    Par alvinleetya dans le forum OpenCV
    Réponses: 5
    Dernier message: 01/10/2012, 16h19
  2. accéder a des élément d'un classe partagé en deux (partial)
    Par TaymouWan dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/04/2009, 11h58
  3. [DOM] Accéder à des éléments du formulaire
    Par riete dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 17/03/2009, 17h47
  4. [Xaml/C#:CustomControl] Comment accéder à des éléments du Template?
    Par SuprazZz dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 26/11/2008, 20h40
  5. [dom je pense]accéder à des éléments d un tableau sans id
    Par luta dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 07/02/2006, 15h31

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