menu vertical dynamique

menu vertical dynamique - HTML/CSS - Programmation

Marsh Posté le 18-06-2007 à 17:18:39    

J'ai un menu vertical que j'ai inséré dans un site en ASP et auquel je voudrais rajouter des options....
 
- Je souhaiterai que mon menu reste en état lorsque je recharge ma page. Il s'agit d'un menu qui ressemble a un treeview et je veux donc que les sous-menu qui ont été développé le reste. Je pensais passer par une variable de session, mais est-ce possible en javascript ?
 
- Je souhaiterai a l'aide d'un boutton pouvoir développer l'ensemble du menu et inversement le refermer...
 
Si quelqu'un a des pistes a m'indiquer
 
Merci d'avance
 
Voici le code de mon menu:

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <HTML>
  3.     <HEAD>
  4.         <TITLE>Test de menu dynamique</TITLE>
  5.         <STYLE>
  6.             .parent {
  7.                 font-family: verdana;
  8.                 font-weight: bold;
  9.                 font-size: 10pt;
  10.                 cursor: hand;
  11.             }
  12.             .child  {
  13.                 font-size: 10pt;
  14.    margin-left: 10pt;
  15.                 font-weight: normal;
  16.             }
  17.             a:hover { color:red; }
  18.         </STYLE>
  19.         <SCRIPT LANGUAGE=javascript>
  20.             var intCount = 0;
  21.             //-Fonction d'ajout d'entrées principales-------------------------
  22.             function DynamicMenu_addParent(strName) {
  23.                 var strID = 'P_' + strName;
  24.                 var strTemp = '<DIV ID="' + strID + '" CLASS="parent"';
  25.                 strTemp += ' onclick ="expandCollapse(this);">';
  26.                 strTemp += '<IMG SRC="left.gif" Height="12">';
  27.                 strTemp += '&nbsp;' + strName;
  28.                 strTemp += '<DIV STYLE="display: none" CLASS="child"></DIV>';
  29.                 strTemp += '</DIV>';
  30.                 this.div.innerHTML += strTemp;
  31.                 this.currentChild = document.getElementById(strID);
  32.             }
  33.             //-Fonction d'ajout des sous entrées principales-------------------------
  34.             function DynamicMenu_addSousParent(strName) {
  35.                 var strID = 'S_' + strName;
  36.                 var strTemp = '<DIV ID="' + strID + '" CLASS="parent"';
  37.                 strTemp += ' onclick ="expandCollapse(this);">';
  38.                 strTemp += '<IMG SRC="left.gif" Height="12">';
  39.                 strTemp += '&nbsp;' + strName;
  40.                 strTemp += '<DIV STYLE="display: none" CLASS="child"></DIV>';
  41.                 strTemp += '</DIV>';
  42.                 if (document.all) {
  43.                     this.currentChild.children[1].innerHTML += strTemp;
  44.                 } else {
  45.                     this.currentChild.childNodes[2].innerHTML += strTemp;
  46.                 }
  47.                 this.currentChild = document.getElementById(strID);
  48.             }
  49.             //-Fonction d'ajout de liens dans le menu-------------------------
  50.             function DynamicMenu_addChild(strName,strURL) {
  51.                 var strTemp = '<A HREF="' + strURL + '"'
  52.                             + ' onClick="cancelBubble(arguments[0]);">'
  53.                             + strName + '</A><BR>';
  54.                 if (document.all) {
  55.                     this.currentChild.children[1].innerHTML += strTemp;
  56.                 } else {
  57.                     this.currentChild.childNodes[2].innerHTML += strTemp;
  58.                 }
  59.             }
  60.             //-inhibe la cascade d'évènements au DIV conteneur----------------
  61.             function cancelBubble(netEvent) {
  62.                 if (document.all) {
  63.                     window.event.cancelBubble = true;
  64.                 } else {
  65.                     netEvent.cancelBubble = true;
  66.                 }
  67.             }
  68.             //-Contracte ou expanse le menu-----------------------------------
  69.             function expandCollapse(objElement) {
  70.    var strId = objElement.id;
  71.    if (intCount == 0) {
  72.                 if (document.all) {
  73.                     var imgIcon = objElement.children[0];
  74.                     objElement = objElement.children[1];
  75.                 } else {
  76.                     var imgIcon = objElement.childNodes[0];
  77.                     objElement = objElement.childNodes[2];
  78.                 }   
  79.                 if (objElement.style.display == "none" ) { 
  80.                     objElement.style.display = "block" ;
  81.                     imgIcon.src = "bottom.gif" ;
  82.                 } else {
  83.                     objElement.style.display = "none" ;
  84.                     imgIcon.src = "left.gif" ;
  85.                 }
  86.    }
  87.    if (strId.substring(0,1) == 'S') {
  88.     intCount = 1;
  89.    }
  90.    if (strId.substring(0,1) == 'P' && intCount == 1) {
  91.     intCount = 0;
  92.    }
  93.             }
  94.             //-Fonction de création de menu dynamique-------------------------  
  95.             function DynamicMenu(strName) {
  96.                 //var id = "Menu" + intCount++;
  97.                 var id = strName;
  98.                 document.write('<DIV Id="' + id + '"></DIV>');
  99.                 this.div = document.getElementById(id);
  100.                 this.currentChild = null;
  101.                 this.addParent = DynamicMenu_addParent;
  102.                 this.addSousParent = DynamicMenu_addSousParent;
  103.                 this.addChild = DynamicMenu_addChild;
  104.             }
  105.         </SCRIPT>
  106.     </HEAD>
  107.     <BODY>
  108.         <SCRIPT Language="Javascript">
  109.             var menu = new DynamicMenu("Menu1" );
  110.   menu.addParent("Présentation","page1.html" );
  111.                 menu.addChild("Lien 1","page1.html" );
  112.             menu.addSousParent("Node 11","" );
  113.                 menu.addChild("Lien 1","page1.html" );
  114.                 menu.addChild("Lien 2","page2.html" );
  115.              menu.addSousParent("Node 111","" );
  116.                  menu.addChild("Lien 1","page1.html" );
  117.             menu.addParent("Liens","" );
  118.                 menu.addChild("Lien 1","page1.html" );
  119.                 menu.addChild("Lien 2","page2.html" );
  120.         </SCRIPT>
  121.     </BODY>
  122. </HTML>

Reply

Marsh Posté le 18-06-2007 à 17:18:39   

Reply

Marsh Posté le 18-06-2007 à 23:23:54    

Je ne réponds pas à ta question mais moi j'utilise ça, ça marche très bien et c'est assez souple !!!
http://www.destroydrop.com/javascripts/tree/
et des exemples ici:
http://www.destroydrop.com/javascripts/tree/example/
Maintenant, si tu veux développer un truc toi même... :whistle:
 
L'API nous dit ceci :
configuration :
useCookies : Boolean  The tree uses cookies to remember it's state.
et il y a une fonction open all / close all


Message édité par fabrice91 le 18-06-2007 à 23:28:04
Reply

Marsh Posté le 19-06-2007 à 09:01:14    

Merci pour ton lien, sa pourrait m'intéresser...
 
Sinon j'ai oublié de préciser un truc: c'est pas moi qui a développé ce menu, il s'agit d'un code dispo sur le net... je mettrai un lien vers la source si je le retrouve...

Reply

Sujets relatifs:

Leave a Replay

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