Results 1 to 3 of 3

Thread: Modification of simple tree menu

  1. #1
    Join Date
    Feb 2011
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Smile Modification of simple tree menu

    Hi there,
    Question about Simple Tree Menu
    http://www.dynamicdrive.com/dynamicindex1/navigate1.htm
    The tutorial shows separated expand or contract buttons to control the menu.
    I'd like to know if I wanna expand a Folder, but contract other expanded folders, how can I make it?
    Thanks in advance!

  2. #2
    Join Date
    Dec 2008
    Location
    Portsmouth, UK
    Posts
    1,891
    Thanks
    2
    Thanked 441 Times in 435 Posts

    Default

    modify function

    Code:
    ddtreemenu.buildSubTree=function(treeid, ulelement, index){
     ulelement.parentNode.className="submenu"
     if (typeof persisteduls[treeid]=="object"){ //if cookie exists (persisteduls[treeid] is an array versus "" string)
      if (ddtreemenu.searcharray(persisteduls[treeid], index)){
       ulelement.setAttribute("rel", "open")
       ulelement.style.display="block"
       ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
      }
      else {
       ulelement.setAttribute("rel", "closed")
      }
     } //end cookie persist code
     else if (ulelement.getAttribute("rel")==null || ulelement.getAttribute("rel")==false){ //if no cookie and UL has NO rel attribute explicted added by user
       ulelement.setAttribute("rel", "closed")
     }
     else if (ulelement.getAttribute("rel")=="open"){  //else if no cookie and this UL has an explicit rel value of "open"
      ddtreemenu.expandSubTree(treeid, ulelement) //expand this UL plus all parent ULs (so the most inner UL is revealed!)
     }
     ulelement.parentNode.onclick=function(e){
      var submenu=this.getElementsByTagName("ul")[0]
      if (submenu.getAttribute("rel")=="closed"){
       submenu.style.display="block"
       submenu.setAttribute("rel", "open")
       ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
       ddtreemenu.closelast(submenu);
      }
      else if (submenu.getAttribute("rel")=="open"){
       submenu.style.display="none"
       submenu.setAttribute("rel", "closed")
       ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.closefolder+")"
      }
      ddtreemenu.preventpropagate(e)
     }
     ulelement.onclick=function(e){
      ddtreemenu.preventpropagate(e)
     }
    }
    add new function

    Code:
    ddtreemenu.closelast=function(submenu){
     var obj=submenu,myl=0;
     while (obj.parentNode){
      obj=obj.parentNode;
      if (obj.className=='treeview'){
       break;
      }
      myl++;
     }
     var uls=obj.getElementsByTagName('UL'),ary=[];
     for (var level,ul,z0=0;z0<uls.length;z0++){
      level=-2;
      ul=uls[z0];
      while (ul.parentNode){
       level++;
       if (ul.className=='treeview'){
        break;
       }
       ul=ul.parentNode;
      }
      ary.push(level);
     }
     for (var z1=0;z1<uls.length;z1++){
      if (uls[z1]!=submenu&&ary[z1]>=myl){
       uls[z1].style.display="none";
       uls[z1].setAttribute("rel", "closed");
       uls[z1].parentNode.style.backgroundImage="url("+ddtreemenu.closefolder+")";
      }
     }
    }
    Vic
    God Loves You and will never love you less.
    http://www.vicsjavascripts.org/Home.htm
    If my post has been useful please donate to http://www.operationsmile.org.uk/

  3. #3
    Join Date
    Feb 2011
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Smile

    Thank you very much!

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •