Menu Dynamique JavaScript & Algorithme [Résolu]

Menu Dynamique JavaScript & Algorithme [Résolu] - HTML/CSS - Programmation

Marsh Posté le 02-06-2004 à 16:25:43    

Bonjour, :hello: ca ne fait pas longtemps que g démarrer le javascript et je suis en train de faire un menu dynamique pour un site, mais ne maitrisant pas encore assez bien le JS (et étant limité par le temps) je n'arrive pas à mettre en oeuvre mon "algo".
 
Voila le menu dynamique (comme le menu "démarrer" de windows), pouvant aller jusqu'à 4 sous-rubriques :
 

Code :
  1. |--1|--11|--111
  2. |   |    |--112
  3. M   |
  4. E   |--12
  5. N   |--13|--131
  6. U        |--132
  7. |
  8. |--2|--21
  9.     |--22


 
Voilà une catégorie, elles sont toutes prêtent, plus qu'à les masquées ou affichées:
 

Code :
  1. ...
  2. #cat11 {position: absolute; visibility: hidden; top: 0px; left: 140px;}
  3. ...
  4. </style>
  5. </head>
  6. <body>
  7. ...
  8. <div id=cat11>Lien</div>
  9. ...


 
l'algo. (funtion shOw())
 

Code :
  1. Si la catégorie survolée n'est pas parente de la derniere catégorie affichée alors :
  2. -> effacer les catégories supérieure au "niveau" en cours
  3. -> afficher les catégories enfantes de niveau : niveau en cours + 1


 
Alors voilà si vous pouviez m'aider de manière quelquonque, (un algo plus facile ou des pistes pour faire celui ci) ca me tirerais une épingle du pied  :)


Message édité par Dr Raf le 14-06-2004 à 10:55:56
Reply

Marsh Posté le 02-06-2004 à 16:25:43   

Reply

Marsh Posté le 02-06-2004 à 19:47:05    

Code :
  1. <script language="JavaScript">
  2. var cAtDisp = 'cat0';
  3. function shOw(cAt) {
  4. if (cAt != cAtDisp.slice(0,cAt.length)) {
  5. document.getElementById(id.length>cAt.length).style.visibility='hidden';
  6. document.getElementById(cAt!.slice(0,cAt.length+1)).style.visibility='visible';
  7. cAtDisp = 'cAt' + '1';
  8. }
  9. }
  10. </script>


 
 
bon c faux :o  mais l'iddée est là... personne pourrait me donner un coup de main ?  :??:  :)

Reply

Marsh Posté le 02-06-2004 à 19:54:51    

Dr Raf a écrit :

Code :
  1. <
  2. if (cAt != cAtDisp.slice(0,cAt.length))
  3. </script>


 
 
bon c faux :o  mais l'iddée est là... personne pourrait me donner un coup de main ?  :??:  :)


 
Qu'est-ce que c'est que ça ?  :heink:  
 
fais une fonction et appelle là avec un onmouseover di diou... Et fait une autre fonction appelée par un oumouseout.  :o

Reply

Marsh Posté le 02-06-2004 à 20:06:27    

c ske g fait.
 

Code :
  1. onmouseover="javascript:shOw('cat1');"


 
 
tu as compris ske je voulais faire ?


Message édité par Dr Raf le 03-06-2004 à 15:24:26
Reply

Marsh Posté le 03-06-2004 à 07:15:24    

document.getElementById(id.length>cAt.length).style.visibility='hidden';
 
c ca ki foire, comment faire pour masquer toutes les cat avec un id plus long que la catégorie en cours ?
 
document.getElementById(cAt!.slice(0,cAt.length+1)).style.visibility='visible';
 
idem mais pour afficher toutes les cat avec un id qui commence pareil que celle en cours et 1 caractère en plus...  
 
 
 
 
personne pour m'aider ?


Message édité par Dr Raf le 03-06-2004 à 07:23:50
Reply

Marsh Posté le 03-06-2004 à 12:55:02    

bon voila g reussi a pondre un script qui marche  (pour le onmouseover only pour l'instant) :o  
 

Code :
  1. <script language="JavaScript">
  2. var cAtDisp = 'cat9';
  3. function shOw(cAt)
  4. {
  5. <!-- Si catégorie selectionée n'est pas parente de la dernière affichée-->
  6. if ( cAt != cAtDisp.slice(0,cAt.length) )
  7. {
  8.  <!-- Masquer dernières catégories affichées -->
  9.  for( var i=(cAtDisp.slice(3,(cAtDisp.length))); i<=(cAtDisp.slice(3,(cAtDisp.length)))+8; i++ )
  10.  {
  11.   if ( document.all('cat' + i) ) { document.getElementById('cat' + i).style.visibility='hidden'; }
  12.  }
  13.  <!-- Afficher catégories enfantes -->
  14.  for( var i=((cAt.slice(3,(cAtDisp.length)))*10)+1; i<=((cAt.slice(3,(cAtDisp.length)))*10)+9; i++ )
  15.  {
  16.   if ( document.all('cat' + i) ) { document.getElementById('cat' + i).style.visibility='visible'; }
  17.  }
  18.  <!-- Mémoriser catégorie affichée -->
  19.  cAtDisp = cAt + '1';
  20. }
  21. }
  22. </script>


 

Code :
  1. onmouseover="javascript:shOw('cat selectionée')


 
seul hic il est quand meme assez lent.  :(  si vous avez des idées pour l'améliorer ou si vous pouvez me dire ce qui le ralenti...

Reply

Marsh Posté le 03-06-2004 à 13:27:28    

voila g amélioré le script, g pu de probleme de 'lag'.
 

Code :
  1. <script language="JavaScript">
  2. var cAtDisp = 'cat9';
  3. function shOw(cAt)
  4. {
  5. <!-- Si catégorie selectionée n'est pas parente de la dernière affichée-->
  6. if ( cAt != cAtDisp.slice(0,cAt.length) )
  7. {
  8.  <!-- Masquer dernières catégories affichées -->
  9.  i = (cAtDisp.slice(3,(cAtDisp.length)));
  10.  while ( document.all('cat' + i) != null )
  11.  {
  12.   document.getElementById('cat' + i).style.visibility='hidden';
  13.   i++;
  14.  }
  15.  <!-- Afficher catégories enfantes -->
  16.  i = cAt.slice(3,(cAt.length)) + '1';
  17.  while ( document.all('cat' + i) != null )
  18.  {
  19.   document.getElementById('cat' + i).style.visibility='visible';
  20.   i++;
  21.  }
  22.  <!-- Mémoriser catégorie affichée -->
  23.  cAtDisp = cAt + '1';
  24. }
  25. }
  26. </script>


 
 
merci pour votre aide.  :)

Reply

Marsh Posté le 03-06-2004 à 15:19:35    

oops problème => sur une arboressence à plus de 1 niveau ca foire parce que le script ne se rappel que du dernier niveau affiché.
 
comment je peux faire pour lister toutes les div 'visible' et masquer celles de mon choix ?

Reply

Marsh Posté le 04-06-2004 à 01:00:23    

bon bah g finalement reussi.
 

Code :
  1. <script language="JavaScript">
  2. var timeOut;
  3. var cAtDisp = 'cat99';
  4. var cAtDisp1 = '';
  5. var cAtDisp2 = '';
  6. var cAtDisp3 = '';
  7. var cAtDisp4 = '';
  8. var cAtDisp5 = '';
  9. function apU(x)
  10. {
  11. switch(x)
  12. {
  13.  case 1: cAtDisp1 = ''; break;
  14.  case 2: cAtDisp2 = ''; break;
  15.  case 3: cAtDisp3 = ''; break;
  16.  case 4: cAtDisp4 = ''; break;
  17.  case 5: cAtDisp5 = ''; break;
  18.  default: document.write ( 'Erreur sur l\'argument de la fonction apU('+x+').' ); break;
  19. }
  20. }
  21. function shOw(cAt)
  22. {
  23. clearTimeout(timeOut);
  24. // Si catégorie selectionée n'est pas parente de la dernière affichée
  25. if ( cAt != cAtDisp.slice(0,cAt.length) || cAt.length + 1 != cAtDisp.length )
  26. {
  27.  // Masquer catégories affichées de niveau supérieur
  28.  for (var i=(cAt.slice(3,(cAt.length))).length; i<=5; i++ )
  29.  {
  30.   if ( eval('cAtDisp' + i) != '' )
  31.   {
  32.    count = 0;
  33.    while ( document.all('cat'+(parseInt(eval('cAtDisp' + i).slice(3,eval('cAtDisp' + i).length))+count)) )
  34.    {
  35.     document.getElementById('cat'+(parseInt(eval('cAtDisp' + i).slice(3,eval('cAtDisp' + i).length))+count)).style.visibility='hidden';
  36.     count++;
  37.    }
  38.    apU(i);
  39.   }
  40.  }
  41.  // Afficher catégories enfantes
  42.  i = cAt.slice(3,(cAt.length)) + '1';
  43.  while ( document.all('cat' + i) != null )
  44.  {
  45.   document.getElementById('cat' + i).style.visibility='visible';
  46.   i++;
  47.  }
  48.  // Mémoriser catégories survolées
  49.  switch( cAt.length )
  50.  {
  51.  case 4: cAtDisp1 = cAt + '1'; cAtDisp = cAt + '1'; break;
  52.  case 5: cAtDisp2 = cAt + '1'; cAtDisp = cAt + '1'; break;
  53.  case 6: cAtDisp3 = cAt + '1'; cAtDisp = cAt + '1'; break;
  54.  case 7: cAtDisp4 = cAt + '1'; cAtDisp = cAt + '1'; break;
  55.  case 8: cAtDisp5 = cAt + '1'; cAtDisp = cAt + '1'; break;
  56.  default: document.write ( 'Erreur sur l\'argument de la fonction shOw().' ); break;
  57.  }
  58. }
  59. }
  60. function UnshOw() { timeOut = setTimeout("closeAll()",500); }
  61. function closeAll()
  62. {
  63. for (var i=1; i<=5; i++ )
  64. {
  65.  if ( eval('cAtDisp' + i) != '' )
  66.  {
  67.   count = 0;
  68.   while ( document.all('cat'+(parseInt(eval('cAtDisp' + i).slice(3,eval('cAtDisp' + i).length))+count)) )
  69.   {
  70.    document.getElementById('cat'+(parseInt(eval('cAtDisp' + i).slice(3,eval('cAtDisp' + i).length))+count)).style.visibility='hidden';
  71.    count++;
  72.   }
  73.   apU(i);
  74.  }
  75. }
  76. cAtDisp = '';
  77. }
  78. </script>


 
 

Code :
  1. #cat1 {position: absolute; visibility: visible; top: 0px; left: 0px;}


 

Code :
  1. <div id=cat1><a href="#" onmouseover="javascript:shOw('cat1');" onmouseout="javascript:UnshOw();">blabla</a></div>


 
 
si ca peut servir à kelkun...
 
aller ++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed