Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1787 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Menu Dynamique JavaScript & Algorithme [Résolu]

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Menu Dynamique JavaScript & Algorithme [Résolu]

n°749059
Dr Raf
Roaccutane® powered
Posté le 02-06-2004 à 16:25:43  profilanswer
 

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
mood
Publicité
Posté le 02-06-2004 à 16:25:43  profilanswer
 

n°749401
Dr Raf
Roaccutane® powered
Posté le 02-06-2004 à 19:47:05  profilanswer
 

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 ?  :??:  :)

n°749415
Hermes le ​Messager
Breton Quiétiste
Posté le 02-06-2004 à 19:54:51  profilanswer
 

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

n°749435
Dr Raf
Roaccutane® powered
Posté le 02-06-2004 à 20:06:27  profilanswer
 

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
n°750046
Dr Raf
Roaccutane® powered
Posté le 03-06-2004 à 07:15:24  profilanswer
 

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
n°750566
Dr Raf
Roaccutane® powered
Posté le 03-06-2004 à 12:55:02  profilanswer
 

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...

n°750634
Dr Raf
Roaccutane® powered
Posté le 03-06-2004 à 13:27:28  profilanswer
 

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.  :)

n°750894
Dr Raf
Roaccutane® powered
Posté le 03-06-2004 à 15:19:35  profilanswer
 

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 ?

n°751829
Dr Raf
Roaccutane® powered
Posté le 04-06-2004 à 01:00:23  profilanswer
 

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 ++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Menu Dynamique JavaScript & Algorithme [Résolu]

 

Sujets relatifs
[C] définition d'une structure dynamiqueProblème de fichiers / tableaux [RESOLU]
[PHP] Cookies VS Fonction dans une classe [Resolu][Perl] Regular expression "dynamique"
[JAVASCRIPT] Object Image() et tailles de celui-ci dans IE et FireFox[Résolu][Windows]Kill thread Python
[Résolu][Jar]Localisation de ressource[PHP / XML] Problème de fichier UTF-8 [Résolu]
problème de menu dynamique 
Plus de sujets relatifs à : Menu Dynamique JavaScript & Algorithme [Résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR