Se connecter avec
S'enregistrer | Connectez-vous

Menu déroulant verticale dynamique

Dernière réponse : dans Programmation

Salut à tous.

Voila j'ai un ptit problème avec mon menu déroulant. Tout marche jusqu'à ce que je veux faire appel à une fonction "clicMenu" qui me permet, si je clic sur le menu, de faire apparaitre les sous menus qui sont cachés.
A priori rien de bien compliqué, cependant ça ne marche pas.
Si vous pourriez m'aider je vous en serai très reconnaissant.

Merci d'avance
++

code :

  1. <HTML>
  2. <HEAD>
  3. <script language="Javascipt">
  4. function clicMenu(num)
  5. {
  6.  
  7. // Booléen reconnaissant le navigateur (vu en partie 2)
  8. isIE = (document.all)
  9. isNN6 = (!isIE) && (document.getElementById)
  10.  
  11. // Compatibilité : l'objet menu est détecté selon le navigateur
  12. if (isIE) menu = document.all['menu' + num];
  13. if (isNN6) menu = document.getElementById('menu' + num);
  14.  
  15. // On ouvre ou ferme
  16. if (menu.style.display == "none"){
  17. // Cas ou le tableau est caché
  18. menu.style.display = ""
  19. } else {
  20. // On le cache
  21. menu.style.display = "none"
  22. }
  23. }
  24. </script>
  25. <link href="styleTxt.css" rel="stylesheet" type="text/css">
  26. </HEAD>
  27. <table width="300" cellspacing="1" cellpadding="0">
  28. <tr> <td class="titre"> Titre 1 </td> </tr>
  29. <tr> <td class="titre"> Titre 2 </td> </tr>
  30. <tr> <td class="titre" onClick="clicMenu(1)"> Titre 3 </td> </tr>
  31. <tr style="display:'none'" id="menu1"> <td> <table width="200" cellspacing="0" cellpadding="0">
  32. <tr> <td class="soustitre"> Sous-titre 1 </td> </tr>
  33. <tr> <td class="soustitre"> Sous-titre 2 </td> </tr>
  34. <tr> <td class="soustitre"> Sous-titre 3 </td> </tr>
  35. <tr> <td class="soustitre"> Sous-titre 4 </td> </tr>
  36. <tr> <td class="soustitre"> Sous-titre 5 </td> </tr>
  37. <tr> <td class="soustitre"> Sous-titre 6 </td> </tr>
  38. <tr> <td class="soustitre"> Sous-titre 7 </td> </tr>
  39. </table> </td> </tr>
  40. <tr> <td class="titre"> Titre 4 </td> </tr>
  41. </table>
  42. </HTML>
Lassé par la pub ? Créez un compte

  1. <body>
  2. <script language="javascript" type="text/javascript">
  3. <!--
  4. window.onload=montre;
  5. function montre(id) {
  6. var d = document.getElementById(id);
  7. for (var i = 1; i<=10; i++)
  8. {
  9. if (document.getElementById('smenu'+i))
  10. {
  11. document.getElementById('smenu'+i).style.display='none';}
  12. }
  13. if (d)
  14. {
  15. d.style.display='block';}
  16. }
  17. //-->
  18. </script>
  19. <dl id="menu">
  20. <dt onclick="javascript:montre();"><a href="#">Menu 1</a></dt>
  21.  
  22. <dt onclick="javascript:montre('smenu2');">Menu 2</dt>
  23. <dd id="smenu2">
  24. <ul>
  25. <li><a href="#">Sous-Menu 2.1</a></li>
  26. <li><a href="#">Sous-Menu 2.2</a></li>
  27. <li><a href="#">Sous-Menu 2.3</a></li>
  28. </ul>
  29. </dd>
  30.  
  31. <dt onclick="javascript:montre('smenu3');">Menu 3</dt>
  32. <dd id="smenu3">
  33. <ul>
  34. <li><a href="#">Sous-Menu 3.1</a></li>
  35. <li><a href="#">Sous-Menu 3.1</a></li>
  36. <li><a href="#">Sous-Menu 3.1</a></li>
  37. <li><a href="#">Sous-Menu 3.1</a></li>
  38. <li><a href="#">Sous-Menu 3.1</a></li>
  39. <li><a href="#">Sous-Menu 3.1</a></li>
  40. </ul>
  41. </dd>
  42.  
  43. <dt onclick="javascript:montre('smenu4');">Menu 4</dt>
  44. <dd id="smenu4">
  45. <ul>
  46. <li><a href="#">Sous-Menu 4.1</a></li>
  47. <li><a href="#">Sous-Menu 4.1</a></li>
  48. </ul>
  49. </dd>
  50.  
  51. </dl>
  52. </body>


Celui la marche ... bien sûr avec une bonne feulle de style cela peut ressembler a un menu décent ;) 

si tu veux un exemple du css que j'utilise:
  1. dl, dt, dd, ul, li {
  2. margin: 0;
  3. padding: 0;
  4. list-style-type: none;
  5. }
  6. #menu {
  7. position: absolute;
  8. top: 0;
  9. left: 0;
  10. }
  11. #menu {
  12. width: 15em;
  13. }
  14. #menu dt {
  15. cursor: pointer;
  16. margin: 2px 0;;
  17. height: 20px;
  18. line-height: 20px;
  19. text-align: center;
  20. font-weight: bold;
  21. border: 1px solid gray;
  22. background: #ccc;
  23. }
  24. #menu dd {
  25. border: 1px solid gray;
  26. }
  27. #menu li {
  28. text-align: center;
  29. background: #fff;
  30. }
  31. #menu li a, #menu dt a {
  32. color: #000;
  33. text-decoration: none;
  34. display: block;
  35. border: 0 none;
  36. height: 100%;
  37. }
  38.  
  39. #menu li a:hover, #menu dt a:hover {
  40. background: #eee;


Bonne chance! Je préfères que tu te base d'un travail déjà complété pour modifier le tien et corriger tes erreurs que de te corriger le tient comme ça tout cuit dans le bec :jap:  [Bien que ce que je te donnes soit aussi du pré-maché...] Je te conseil de faire un petit effort et d'essayer de comprendre, si tu as des questions hésites pas.

Meme après comparaison avec l'exemple donné, je ne comprend toujours pas pourquoi cela ne marche pas.
D'après IE, mon erreur ce situe à la ligne où je fait appel à la fonction "onclick". Mais je ne voie pas ce que j'ai mal écrit ou ce que j'aurai du écrire.

Possible de m'éclairer un peu plus svp?

et mettant en parenthese ca : ), pour en revenir au code, j'ai effectué divers test et je me retrouve avec l'erreur qui se situe la ou je fais appel à la fontion onclick.
En changeant directement la fonction, le code fonctionnait presque. Donc à priori ce n'est pas de la maniere que je l'appelle qui déconne, mais la fonction en elle meme.

  1. <script language="Javascipt">
  2. function clicMenu(num)
  3. {
  4.  
  5. // Booléen reconnaissant le navigateur
  6. isIE = (document.all)
  7. isNN6 = (!isIE) && (document.getElementById)
  8.  
  9. // Compatibilité : l'objet menu est détecté selon le navigateur
  10. if (isIE) menu = document.all['menu' + num];
  11. if (isNN6) menu = document.getElementById('menu' + num);
  12.  
  13. // On ouvre ou ferme
  14. if (menu.style.display == "none" ){
  15. // Cas ou le tableau est caché
  16. menu.style.display = ""
  17. } else {
  18. // On le cache
  19. menu.style.display = "none"
  20. }
  21. }
  22. </script>


Est ce qu'à priori, un truc vous choque dans ce que j'ai écrit la?
J'ai testé avec ca :

  1. <script language="javascript" type="text/javascript">
  2. <!--
  3. window.onload=montre;
  4. function montre(id) {
  5. var d = document.getElementById(id);
  6. for (var i = 1; i<=10; i++)
  7. {
  8. if (document.getElementById('smenu'+i))
  9. {
  10. document.getElementById('smenu'+i).style.display='none';}
  11. }
  12. if (d)
  13. {
  14. d.style.display='block';}
  15. }
  16. //-->
  17. </script>


et bien que ca marche, ca ne me donne pas le résultat souhaité, enfin plutot ca ne fait pas tout, c'est à dire que je peux bien ouvrir mon menu comme je le souhaite, cependant je peux pas le fermé, et je ne comprend pas trop ce code pour pourvoir y apporter des modifs.

Si possible j'aimerai encore avoir un peu de votre aide, soit pour m'aider à réparer l'erreur dans mon premier code au nivea de la fonction, soit pour pouvoir à partir du second refermé mon sous-menu.


Merci d'avance
++
Lassé par la pub ? Créez un compte
  • Contenus similaires :
Tags :