Avatar billede karsten_larsen Praktikant
24. januar 2004 - 18:24 Der er 7 kommentarer og
1 løsning

foldemenu - data fra db, men kun dele af menu folder rigtig

Jeg prøver at bruge en træ menu [http://www.eksperten.dk/spm/439321], hvor menuer udskrives fra databasen via asp. Det fungerer, men det er ikke altid at alt folder sig sammen via javascriptet, når en ny hovedmenu aktiveres.

Se nedenstående.

??:-) karsten_larsen

<html>
<head>
<title>Vis/skjul menu -- og husk det !-)</title>
<script type="text/javascript" language="JavaScript">
//skrevet af roenvig, http://www.eksperten.dk/spm/439321
function showMnu(id) {//IE4+, NS6+, alle browsere efter 1998
  var menu = getElm("u"+id);
  for(i=1;5>i;i++){
      if(menu!=getElm("umenu"+i))getElm("umenu"+i).style.display='none';
  }
  if(menu.style.display=='none'){
      menu.style.display='block';
      document.cookie = "menu="+id;
  }else{
      menu.style.display='none';
      document.cookie = "menu="+id;
  }
}
function getElm(elm){
  if(document.getElementById){
      menu = document.getElementById(elm);
  }else if(document.all){
      menu = document.all[elm];
  }
  return menu;
}
function readCook(){
    if(document.cookie){
        cook = document.cookie;
        mCook = cook.substring(cook.indexOf("menu=")+5);
        if(mCook.indexOf(";"))
            mCook = mCook.substring(0,mCook.indexOf(";"))
        if(mCook.length==5)showMnu(mCook);
    }
}
</script>
</head>
<body onload="readCook()">

<div id="menu1" style="cursor:pointer" onclick="showMnu(this.id);"><b>Velkommen</b></div>
<div style="display:none;" id="umenu1">
<a href="/min_mappe/" onFocus="this.blur()">Link 1</a><br>
<a href="/min_mappe1/" onFocus="this.blur()">Link 2</a><br>
</div>
<div id="menu2" style="cursor:pointer" onclick="showMnu(this.id);"><b>Velkommen</b></div>
<div style="display:none;" id="umenu2">
<a href="/min_mappe/" onFocus="this.blur()">Link 1</a><br>
<a href="/min_mappe1/" onFocus="this.blur()">Link 2</a><br>
</div>
<div id="menu3" style="cursor:pointer" onclick="showMnu(this.id);"><b>Velkommen</b></div>
<div style="display:none;" id="umenu3">
<a href="/min_mappe/" onFocus="this.blur()">Link 1</a><br>
<a href="/min_mappe1/" onFocus="this.blur()">Link 2</a><br>
</div>


<!-- eksempel på udskrift fra db - hvordan får jeg det til at fungere, som det øverste ?? -->
<div id='menu4' style='Cursor:Hand; Font-Family:Verdana; Font-Size: 13px;' onclick='showMnu(this.id);'>Snippets</div>
<div style='Cursor:Hand; Font-Family:Verdana; Font-Size: 11px;display:none;'id='umenu4'>snip1<br>snip2</div>
<div id='menu5' style='Cursor:Hand; Font-Family:Verdana; Font-Size: 13px;' onclick='showMnu(this.id);'>pc</div>
<div style='Cursor:Hand; Font-Family:Verdana; Font-Size: 11px;display:none;'id='umenu5'>&nbsp;&nbsp;8088<br>&nbsp;&nbsp;80286<br>&nbsp;&nbsp;80386<br>&nbsp;&nbsp;80486<br>&nbsp;&nbsp;P2<br>&nbsp;&nbsp;Athlon Thunderbird<br>&nbsp;&nbsp;P4<br>&nbsp;&nbsp;PDA<br></div>

<div id='menu7' style='Cursor:Hand; Font-Family:Verdana; Font-Size: 13px;' onclick='showMnu(this.id);'>test</div>
<div style='Cursor:Hand; Font-Family:Verdana; Font-Size: 11px;display:none;'id='umenu7'>&nbsp;&nbsp;test1<br>&nbsp;&nbsp;test2<br>&nbsp;&nbsp;test3<br>&nbsp;&nbsp;test4<br></div>

</body>
</html>
Avatar billede karsten_larsen Praktikant
24. januar 2004 - 18:53 #1
hmm - det fungerer når foldemenu er i kronologisk rækkefølge samt " for i" går til maks antal af foldemenuer.

Det må da kunne gøres mere enkelt. Jeg lader sp. stå, hvis der findes en bedre løsning.

:-) karsten_larsen
Avatar billede roenving Novice
24. januar 2004 - 19:02 #2
for(i=1;8>i;i++){
      if(getElm("umenu"+i)&&menu!=getElm("umenu"+i))getElm("umenu"+i).style.display='none';
  }
Avatar billede thesurfer Nybegynder
24. januar 2004 - 19:07 #3
Det *skal* være kronologisk.. dvs "1, 2, 3 ,4..", og ikke "1, 4, 2,3"..
"for i" tæller jo fra 1 og op til 5 (din kode).. dvs den tæller "1, 2 ,3 ,4 ,5". I den rækkefølge..
Avatar billede roenving Novice
24. januar 2004 - 19:14 #4
Med den udvidelse af funktionen er det da fuldstændig ligegyldigt, bare taller som står i for()-betingelserne er større end den største menu-ting ...

-- en helt anden ting er så, at cookie-tingen kun accepterer et-cifrede tal !-)
Avatar billede karsten_larsen Praktikant
24. januar 2004 - 19:47 #5
hmm - så må jeg jo skrive "i"- max ind sammen med asp´en
Avatar billede karsten_larsen Praktikant
24. januar 2004 - 19:50 #6
hmm - roenvig, udvidelsen gjorde scriptet hurtigere og det virker stadig, så drop et svar.

:-) karsten_larsen
Avatar billede roenving Novice
24. januar 2004 - 20:02 #7
Jamen velbekomme '-)
Avatar billede roenving Novice
24. januar 2004 - 20:18 #8
-- og tak for points ;~}
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