PDA

View Full Version : Switch Menu



deppeler
05-05-2005, 09:48 PM
Hi,
I'm using Switch Menu and I don't want it persistent.
I enter persistmenu as 'no' and persisttype as 'local'

But everytime I come in to the site the menu is 'expanded', how do I set it that it is always contracted?

here's the code:

<style type="text/css">
.menutitle{
cursor:pointer;
margin-bottom: 1px;
background-color:#F2CAA6;
color:#000000;
width:3px;
padding:1px;
text-align:center;
#font-weight:bold;
/*/*/border:1px solid #000000;/* */
}

.submenu{
margin-bottom: 0.5em;
}
</style>

<script type="text/javascript">

/***********************************************
* Switch Menu script- by Martial B of http://getElementById.com/
* Modified by Dynamic Drive for format & NS4/IE4 compatibility
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var persistmenu="no" //"yes" or "no". Make sure each SPAN content contains an incrementing ID starting at 1 (id="sub1", id="sub2", etc)
var persisttype="local" //enter "sitewide" for menu to persist across site, "local" for this page only

if (document.getElementById){ //DynamicDrive.com change
document.write('<style type="text/css">n')
document.write('.submenu{display: none;}n')
document.write('</style>')
}

function SwitchMenu(obj){
if(document.getElementById){
var el = document.getElementById(obj);
var ar = document.getElementById("masterdiv").getElementsByTagName("span"); //DynamicDrive.com change
if(el.style.display != "block"){ //DynamicDrive.com change
for (var i=0; i<ar.length; i++){
if (ar[i].className=="submenu") //DynamicDrive.com change
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;
}

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>

<ul>
<div id="masterdiv">
<hr noshade size="1">
<li>
xxxx
</i>
<i>
xxxxx
</i>
<div class="menutitle" onclick="SwitchMenu('sub1')">+</div>
<span class="submenu" id="sub1">
<li>
xxxx
</li>
</span>
</div>
</ul>

thanks
Paul

jscheuer1
05-06-2005, 05:09 AM
Hard to say what is going on, if persist is no, it should appear closed. You may have the file cached. Did you have persist yes and then later change it to no? If so, clear your cache, then try. If your browser has javascript off, the page will always look expanded, no matter how it is set.

deppeler
05-06-2005, 11:38 AM
As far as I know I have JavaScript enabled, when I go to the page and it is expanded I can contract it so the JavaScript is working.
I tried before to delete files and cookies but it didn't seem to do anything.


Also, I can go the the page of a demo etc and all looks fine.


Here is the link to the page, maybe if someone else goes there and see's whether it does it for them:

http://irokradio.com

thanks
Paul

deppeler
05-06-2005, 02:20 PM
I worked out if I removed the 3 '\n' from this portion of code it works:

if (document.getElementById){ //DynamicDrive.com change
document.write('<style type="text/css">\n')
document.write('.submenu{display: none;}\n')
document.write('</style>\n')
}


wierd