Avatar billede Slettet bruger
17. september 2007 - 15:06 Der er 2 kommentarer og
1 løsning

Et lille problem med show/hide menu

Hej eksperter :)

Jeg har en side (www.music4you.dk), som jeg har et lille problem med.
Jeg har lavet en menu i Javascript, så når man trykker på et link, så viser der sig en række undermenuer.

Jeg vil gerne have lavet det sådan, så hvis man trykker på forsiden, så lukker alle dem, der er åben (hvilket som regel er en, da den automatisk lukker den første du trykkede på, hvis du trykker på et andet link).

Koden ser således ud:

<script type="text/javascript">

var persistmenu="yes"
var persisttype="sitewide"

if (document.getElementById){
document.write('<style type="text/css">\n')
document.write('.undermenu{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=="undermenu")
                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>

Og hvis det er vigtigt, så ser noget af (selve) menuen således ud:

<div id="masterdiv">
    <div class="menutitel"><a href="http://www.music4you.dk">Forside</a></div>
    <div class="menutitel" onClick="SwitchMenu('sub1')"><a href="#">CD-Indspilning</a></div>
    <span class="undermenu" id="sub1">
» <a href="default.aspx?pageId=10">Koncept</a><br>
» <a href="default.aspx?pageId=11">Polterabend</a><br>
» <a href="default.aspx?pageId=12">Institutioner</a><br>
» <a href="default.aspx?pageId=13">Teambuilding</a><br>
» <a href="default.aspx?pageId=14">Bands</a><br>
» <a href="default.aspx?pageId=15">Udstyrsliste</a><br>
» <a href="default.aspx?pageId=17">Referencer</a><br>
» <a href="default.aspx?pageId=18">Priser</a><br>
» <a href="default.aspx?pageId=19">F A Q</a><br>    </span>

    <div class="menutitel" onClick="SwitchMenu('sub2')"><a href="#">Institutioner</a></div>
    <span class="undermenu" id="sub2">
» <a href="default.aspx?pageId=28">Koncept</a><br>
» <a href="default.aspx?pageId=20">Musikalsk samvær</a><br>
» <a href="default.aspx?pageId=22">CD indspilning</a><br>
» <a href="default.aspx?pageId=21">Undervisning</a><br>
» <a href="default.aspx?pageId=23">Referencer</a><br>
    </span>

Håber i kan hjælpe mig
Avatar billede roenving Novice
21. september 2007 - 17:18 #1
Prøv f.eks.

...
    <div class="menutitel" onclick="SwitchMenu();"><a href="http://www.music4you.dk">Forside</a></div>
...

-- og ændr scriptet:

function SwitchMenu(obj){
    if(document.getElementById){
      if(obj)
        var el = document.getElementById(obj);
    var ar = document.getElementById("masterdiv").getElementsByTagName("span");
        if(!el || el.style.display != "block"){
            for (var i=0; i<ar.length; i++){
                if (ar[i].className=="undermenu")
                ar[i].style.display = "none";
            }
            if(el)el.style.display = "block";
        }else{
            if(el)el.style.display = "none";
        }
    }
}
Avatar billede Slettet bruger
30. oktober 2007 - 23:46 #2
fandt selv en løsning.
Lukket
Avatar billede roenving Novice
01. november 2007 - 15:57 #3
Hvilken ?-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester