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 :

Créer un menu deroulant via une fonction recursive.


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Créer un menu deroulant via une fonction recursive.
    Bonjour a tous;
    mon problème c'est que je veux crée un déroulant en javascript je suis un peu débutant dans javascript. voilà j'ai une liste

    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
     
    <html><head></head>
    <body>
    <ul id="menu">
       <li>Element-1
             <ul>
                 <li>Element-1-1</li>
                 <li>Element-1-2</li>
             </ul>
       </li>
       <li>Element-2
             <ul>
                 <li>Element-2-1</li>
                 <li>Element-1-2</li>
             </ul>
       </li>
       <li>Element-3</li>
    </ul>
    </body>
    </html>
    mais bien sur le menu peut avoir plus de deux niveau je veux ajouter des idName et des classNam à l'aide dune fonction javascripte qui teste chaque noeud et lui donner la className ou le idName correspondant à mon menu comme ceci :

    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
     
    <html><head></head>
    <body>
    <ul id="menu">
       <li id="liniv0">Element-1
             <ul id="ulniv0">
                 <li id="liniv1">Element-1-1</li>
                 <li id="liniv1">Element-1-2</li>
             </ul>
       </li>
       <li id="liniv0">Element-2
             <ul id="ulniv0">
                 <li id="liniv1">Element-2-1</li>
                 <li id="liniv1"i>Element-1-2</li>
             </ul>
       </li>
       <li id="liniv0">Element-3</li>
    </ul>
    </body>
    </html>

    j'ai utiliser une fonction récursive comme suite mais je sais pas où est le problème sachez que je suis débutant et voilà ma fonction récursive:

    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
     
    idmenu="menu";
    function menuderoulant(idmenu,k){
    	nod=document.getElementById(idmenu);
    	nod=nod.childNodes;
    	for(i=0;i<nod.length;i++){
    		if(nod[i].nodeType==1){
    			nod[i].id="limenu"+k;
    			noed=nod[i].childNodes;
    			for(j=0;j<noed.length;j++){
    				if(noed[j].nodeType==1){
    					noed[j].id="ulmenu"+k;
                                            d=k+1;
    					menuderoulant(noed[j].id,d);
    				}
    			}
    		}
     
    	}
    }

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par samurai741 Voir le message
    j'ai utiliser une fonction récursive comme suite mais je sais pas où est le problème
    si tu ne nous dit pas de quel problème il s'agit, on va avoir du mal à t'aider à le localiser

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour ta réponse;
    le probleme c'est que la fonction ne gere que le premier element <li> du niveau 0 : comme cela

    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
    <ul id="menuv" class="menuv" dir="rtl">
      <li id="limenu0">El-1
           <ul id="ulmenu0">
               <li id="limenu1">El-1-1</li>
               <li id="limenu1">El-1-2</li>
               <li id="limenu1">El-1-3
                  <ul id="ulmenu1">
                     <li id="limenu2">El-1-3-1</li>
                     <li id="limenu2">El-1-3-2</li>
                  </ul>
               </li>
           </ul>
      </li>
      <li>El-2</li>/*voilà c'est là mon probleme le deuxiem ou le N° element li du niveau 0 ne change pas comme si la fonction js supprime les idname de ces li ou ne parcoure pas ces element*/
    </ul>

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    A la place de as-tu essayé d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    les_nod=nod.getElementsByTagName("ul")
    ?
    (mieux vaut utiliser une seconde variable que de recycler "nod", dans ton cas)

    Ainsi tu pourrais aussi utiliser ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    les_nod[i].getElementsByTagName("li")
    .
    Ça te donnerait peut-être une meilleure vision de la structure que tu es en train de parcourir ...

    De plus, je ne suis pas sûr que ton test de nodeType fonctionne comme tu l'entends

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci infiniment je vais essayer tout ça tout de suite pour ta question sur les nodeType ça fonctionne bien mais bon je vais reflichire un peu aussi merci pour ton coup de main je vais te dire ce que j'ai eu

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Non monsieur j'ai pas pu resoudre le probleme en plus l'orsque j'ai utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getElementsByTagName("ul")
    mon variable les_nod est un tableau qui contien toute les element <ul> alors que moi je veux juste que la fonction travaille niveau par niveau sinon comme ça je peux pas et je sais pas a vrai dire comment faire pour que ma fonction peut donner a chaque element <li> et chaque element <ul> son idName correspondant

Discussions similaires

  1. Créer un graphiquer 2D en noir et blanc via une fonction griddata
    Par frisou65 dans le forum Calcul scientifique
    Réponses: 0
    Dernier message: 23/09/2011, 08h39
  2. Réponses: 1
    Dernier message: 12/02/2006, 14h58
  3. Créer un menu contextuel dans une zone de liste
    Par 973thom dans le forum Access
    Réponses: 10
    Dernier message: 13/09/2005, 23h59
  4. créer un type hidden dans une fonction javascript
    Par amelhog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/05/2005, 12h17
  5. Réponses: 7
    Dernier message: 20/03/2005, 14h53

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