Revision: 597
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 20, 2006 14:15 by raondo
Initial Code
With a little formatting this will do the trick. **** There are no usage restrictions on this script.**** Firstly, the JS, to be inserted in the head of your HTML document. <script type="txt/javascript"> var persistmenu="yes" if (document.getElementById){ document.write('<style type="text/css">\n') document.write('.submenu{display: none;}\n') document.write('</style>\n') } function SwitchMenu(obj){ if(document.getElementById){ var el = document.getElementById(obj); var ar = document.getElementById("masterdiv").getElementsByTagName("span"); if(el.style.display != "block"){ for (var i=0; i<ar.length; i++){ if (ar[i].className=="submenu") ar[i].style.display = "none"; } el.style.display = "block"; }else{ el.style.display = "none"; } } } function get_cookie(Name) { var search = Name + "=" var returnvalue = ""; if (document.cookie.length > 0) { offset = document.cookie.indexOf(search) if (offset != -1) { offset += search.length end = document.cookie.indexOf(";", offset); if (end == -1) end = document.cookie.length; returnvalue=unescape(document.cookie.substring(offset, end)) } } return returnvalue; error(1): function not defined } function onloadfunction(){ if (persistmenu=="yes"){ var cookiename=(persisttype=="sitewide")? "switchmenu" : window.location.pathname var cookievalue=get_cookie(cookiename) if (cookievalue!="") document.getElementById(cookievalue).style.display="block" } } function savemenustate(){ var inc=1, blockid="" while (document.getElementById("sub"+inc)){ if (document.getElementById("sub"+inc).style.display=="block"){ blockid="sub"+inc break } inc++ } var cookiename=(persisttype=="sitewide")? "switchmenu" : window.location.pathname var cookievalue=(persisttype=="sitewide")? blockid+";path=/" : blockid document.cookie=cookiename+"="+cookievalue } if (window.addEventListener) window.addEventListener("load", onloadfunction, false) else if (window.attachEvent) window.attachEvent("onload", onloadfunction) else if (document.getElementById) window.onload=onloadfunction if (persistmenu=="yes" && document.getElementById) window.onunload=savemenustate </script> then the HTML <div id="masterdiv"> <div class="menutitle" onclick="SwitchMenu('sub1')"> <a href="index.html" class="menutitle2" title="Link 1 home.">Link 1</a> </div> <div class="menutitle" onclick="SwitchMenu('sub2')">Link 2</div> <span class="submenu" id="sub2"> <a href="sublink1/" class="submenu2" title="Sublink1.">Sub-Link 1</a> </ br> <a href="subLink2/" class="submenu2" title="Sub-Link 2">Sub-Link 2</a> </ br> </div> </div> NOTE: Your "SwitchMenu" identifier's must be numerically ascending, so when you add additional menus you will need sub3, sub4, sub5, on all your Menus (not subMenus). then the styles classes, which are formatted for a current project of mine (which is in a presently distressed design state), so they WILL need some editing- this goes in your external CSS file. .menutitle { border: 1px 0px 1px 0px; border-style: solid; border-color: #9DA5A0; color: #CDDEFC; font-family: Verdana, Geneva, Arial, sans-serif; font-variant: caps; letter-spacing: 2px; font-size: 11px; padding: 3px 10px 3px 20px; margin: 2px 0px 0px 0px; cursor: hand; } .menutitle:hover { background-color: #7A7C7B; cursor: hand; } .menutitle2 { font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; text-decoration: none; border-width: 0px; color: #CDDEFC; } .menutitle2:hover { color: #666; } .submenu2 { background-color: #F8F8F8; border-width: 0px; letter-spacing: 1px; } .submenu2:hover { color: #CDDEFC; background-color: #E1F7BF; } Hope this helps!
Initial URL
http://forum.stylegala.com/viewtopic.php?t=1977&sid=8420ae59d6eed1897b580076a2376f55
Initial Description
sitewide toggle submenus display/hide
Initial Title
toggle menu persist
Initial Tags
Initial Language
JavaScript