Avatar billede twistedup Nybegynder
22. juli 2005 - 10:46 Der er 20 kommentarer og
1 løsning

Menu klapper sammen

Hej eksperter!

Jeg har lavet menuen med nedenstående kode, men når jeg klikker på et af de to link under "om siu" så kommer den kaldte side fint frem, men menuen nulstiller. Dvs. klapper sammen igen.

Hvordan får jeg lavet så menuen ikke klapper sammen før man klikker på et nyt punkt i den?

Et andet spørgsmål:
Hvordan laver jeg koden, så man kun kan have et overordnet menupunkt åbent ad gangen? Nu kan alle åbnes samtidigt. Det fylder jeg rimeligt meget!

<html>
<head>
<title>menu_siu</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript">
    function showMnu(id) {
        var styleCheck = document.getElementById("mnu" + id).style.display;
        //alert(styleCheck);
       
        if (styleCheck == "inline") {
            document.getElementById("mnu" + id).style.display = "none";
        }
        if (styleCheck == "none") {
            document.getElementById("mnu" + id).style.display = "inline";
        }
    }
</script>

<style type="text/css">
<!--

a.menu {          font-family: verdana,arial,sans-serif;
                  height: 10px;
                  font-size: 10pt;
                  color: #ffffff;
                  background: #C00024;
                  width: 100%;
                  text-decoration: none;
                  padding: 1px }

a:menu:hover {    font-family: verdana,arial,sans-serif;
                  color: #000000;
                  font-size: 10pt;
                  background: #C00024;
                  text-decoration : none;
                  border-left: 10px solid #ffffff;
                  }

a:menu:active  { font-family: verdana,arial,sans-serif;
                  color: #000000;
                  font-size: 10pt;
                  text-decoration : none;
                  font-weight: bold;                                   
                  }
-->
</style>

</head>

<body bgcolor="#C00024" background="../layout/menu_baggrund_siu.gif" bgproperties="fixed">
<table width="175" border="0" align="right">
  <tr>
    <td><div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:10px;' OnClick='showMnu(1);'>
    <a href="#" class='menu'>om siu</a></div>
<div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:8px; display:none;' id='mnu1'>
<a href="/page500.aspx" class='menu' onmouseover="window.status='';return true" onmouseout="window.status='';return true">&nbsp;-&nbsp;link1</a><br>
<a href="/page513.aspx" class='menu' onmouseover="window.status='';return true" onmouseout="window.status='';return true">&nbsp;-&nbsp;link2</a></div>
</td>
  </tr>
  <tr>
      <td><div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:10px;' OnClick='showMnu(2);'><a href="#" class='menu'>generel info</a></div>
<div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:8px; display:none;' id='mnu2'><a href="#" class='menu'>&nbsp;-&nbsp;link1</a><br><a href="#" class='menu'>&nbsp;-&nbsp;link2</a></div>
</td>
  </tr>
  <tr>
    <td><div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:10px;' OnClick='showMnu(3);'><a href="#" class='menu'>studiemuligheder</a></div>
<div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:8px; display:none;' id='mnu3'><a href="#" class='menu'>&nbsp;-&nbsp;link1</a><br><a href="#" class='menu'>&nbsp;-&nbsp;link1</a></div>
</td>
  </tr>
  <tr>
    <td><div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:10px;' OnClick='showMnu(4);'><a href="#" class='menu'>spørgsmål og svar</a></div>
<div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:8px; display:none;' id='mnu4'><a href="#" class='menu'>&nbsp;-&nbsp;link1</a><br><a href="#" class='menu'>&nbsp;-&nbsp;link1</a></div>
</td>
  </tr>
  <tr>
    <td><div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:10px;' OnClick='showMnu(5);'><a href="#" class='menu'>chat</a></div>
<div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:8px; display:none;' id='mnu5'><a href="#" class='menu'>&nbsp;-&nbsp;link1</a><br><a href="#" class='menu'>&nbsp;-&nbsp;link1</a></div>
</td>
  </tr>
  <tr>
    <td><div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:10px;' OnClick='showMnu(6);'><a href="#" class='menu'>kontakt</a></div>
<div style='cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:8px; display:none;' id='mnu6'><a href="#" class='menu'>&nbsp;-&nbsp;link1</a><br><a href="#" class='menu'>&nbsp;-&nbsp;link1</a></div>
</td>
  </tr>
</table>


</body>
</html>
Avatar billede roenving Novice
22. juli 2005 - 14:29 #1
Når du skifter hele siden, vil links selvfølgelig klappe sammen, men man kunne jo checke onload, om et link findes i urlen og så folde den ud ...

-- selvfølgelig har jeg ikke haft mulighed for at teste det, men du kan jo forsøge at implementere det, og så lægge et link, hvis det ikke fungerer efter hensigten !-)

-- hvad er forøvrigt den grimme border, du sætter på ved hover og active ?-)

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>menu_siu</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript">
    function showMnu(id) {
        num = 1;
        while(document.getElementById('mnu' + num)){
            document.getElementById('mnu' + num).style.display = 'none';
            num++;
        }
        var st = document.getElementById("mnu" + id).style;
        st.display = st.display != 'inline' ? 'inline' : 'none';
    }
    window.onload = function(){
        var l = document.getElementsByTagName("A");
        for(i = 0; l.length > i; i++){
            if(l[i].parentNode.className == 'uMnuDiv' && location.href.indexOf(l[i].href)>-1)
                showMnu(l[i].parentNode.id.replace(/^.*?\d+$/,"$1"));
        }
    }
</script>

<style type="text/css">
<!--

a.menu {          font-family: verdana,arial,sans-serif;
                  height: 10px;
                  font-size: 10px;
                  color: #fff;
                  background: #C00024;
                  width: 100%;
                  text-decoration: none;
                  padding: 1px }

a.menu:hover {    color: #000;
                  border-left: 10px solid #fff;
                  }

a.menu:active  {  color: #000;
                  font-weight: bold;                                   
                  }
.mnuDiv{cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:10px;}
.uMnuDiv{cursor:hand; cursor:pointer; font-family:verdana,arial,sans-serif; font-size:8px; display:none;}
-->
</style>

</head>

<body bgcolor="#C00024" background="../layout/menu_baggrund_siu.gif" bgproperties="fixed">
<table width="175" border="0" align="right">
  <tr>
    <td><div class='mnuDiv' onclick='showMnu(1);'>
    <a href="#" class='menu'>om siu</a></div>
<div class='uMnuDiv' id='mnu1'>
<a href="/page500.aspx" class='menu' onmouseover="window.status='';return true" onmouseout="window.status='';return true">&nbsp;-&nbsp;link1</a><br>
<a href="/page513.aspx" class='menu' onmouseover="window.status='';return true" onmouseout="window.status='';return true">&nbsp;-&nbsp;link2</a></div>
</td>
  </tr>
  <tr>
      <td><div class='mnuDiv' onclick='showMnu(2);'><a href="#" class='menu'>generel info</a></div>
<div class='uMnuDiv' id='mnu2'><a href="#" class='menu'>&nbsp;-&nbsp;link1</a><br><a href="#" class='menu'>&nbsp;-&nbsp;link2</a></div>
</td>
  </tr>
  <tr>
    <td><div class='mnuDiv' onclick='showMnu(3);'><a href="#" class='menu'>studiemuligheder</a></div>
<div class='uMnuDiv' id='mnu3'><a href="#" class='menu'>&nbsp;-&nbsp;link1</a><br><a href="#" class='menu'>&nbsp;-&nbsp;link1</a></div>
</td>
  </tr>
  <tr>
    <td><div class='mnuDiv' onclick='showMnu(4);'><a href="#" class='menu'>spørgsmål og svar</a></div>
<div class='uMnuDiv' id='mnu4'><a href="#" class='menu'>&nbsp;-&nbsp;link1</a><br><a href="#" class='menu'>&nbsp;-&nbsp;link1</a></div>
</td>
  </tr>
  <tr>
    <td><div class='mnuDiv' onclick='showMnu(5);'><a href="#" class='menu'>chat</a></div>
<div class='uMnuDiv' id='mnu5'><a href="#" class='menu'>&nbsp;-&nbsp;link1</a><br><a href="#" class='menu'>&nbsp;-&nbsp;link1</a></div>
</td>
  </tr>
  <tr>
    <td><div class='mnuDiv' onclick='showMnu(6);'><a href="#" class='menu'>kontakt</a></div>
<div class='uMnuDiv' id='mnu6'><a href="#" class='menu'>&nbsp;-&nbsp;link1</a><br><a href="#" class='menu'>&nbsp;-&nbsp;link1</a></div>
</td>
  </tr>
</table>
</body>
</html>
Avatar billede twistedup Nybegynder
22. juli 2005 - 14:55 #2
Nu kan man i hvert fald kun have én hovedmenu åben ad gangen. Tak for det roenving.

Mht min border får chefen lov til at afgøre, hvor grim den er. Jeg synes i hvert fald godt om den ;)

Mht at checke onload, hvad mener du så med link?
Avatar billede roenving Novice
22. juli 2005 - 14:56 #3
Det er implementeret, men i sagens natur ikke testet, det kan du jo gøre !-)
Avatar billede roenving Novice
22. juli 2005 - 14:58 #4
Hov, der var en fejl:

    window.onload = function(){
        var l = document.getElementsByTagName("A");
        for(i = 0; l.length > i; i++){
            if(l[i].parentNode.className == 'uMnuDiv' && location.href.indexOf(l[i].href)>-1)
                showMnu(l[i].parentNode.id.replace(/^.*?(\d+)$/,"$1"));
        }
    }
Avatar billede twistedup Nybegynder
22. juli 2005 - 15:01 #5
Oooh okey...Den klapper stadig sammen..?
Avatar billede roenving Novice
22. juli 2005 - 15:05 #6
Bemærk, at jeg har flyttet style-properties ud i klasser, og jeg bruger className til at finde linket, så det skal du også gøre !-)
Avatar billede twistedup Nybegynder
22. juli 2005 - 15:07 #7
Hmm, det forstår jeg ikke så meget af...bare ét eksempel..?
Avatar billede roenving Novice
22. juli 2005 - 15:10 #8
Se koden ...
Avatar billede twistedup Nybegynder
22. juli 2005 - 15:17 #9
Okey nu virker det...men menuen åbner først igen et sekund efter hele siden loader.
Ka' man gøre noget ved det?
Avatar billede roenving Novice
22. juli 2005 - 15:21 #10
Nej, for vi kan ikke risikere at forsøge at tage fat i elementer før de er skabt, så man må nødvendigvis vente på at onload kan eksekveres ...

-- men det ville være muligt at gøre det fra din .net-kode, men ville kræve mere end en simpel include, som jeg går ud fra, at du benytter !-)
Avatar billede twistedup Nybegynder
22. juli 2005 - 15:24 #11
Ja okey, det må jeg se på ved en senere lejlighed...nu åbner den øverste menuknap ved bare at køre over den?? den ska' jo kun åbne ved klik.
Avatar billede twistedup Nybegynder
22. juli 2005 - 15:30 #12
Jeg ville gerne kunne give dig et link til den publicerede side, men sidder et modulopbygget standard­software til online administration af websites.
Dvs. jeg skulle udlevere password og login.

Det går nok ikk ;)
Avatar billede roenving Novice
22. juli 2005 - 15:30 #13
Det gør den da ikke hos mig, har du da sat noget onmouseover på den ?-)

-- iøvrigt fangede jeg lige en uhensigtsmæssighed:

    function showMnu(id) {
        var st = document.getElementById("mnu" + id).style;
        var actState = st.display != 'inline';
        num = 1;
        while(document.getElementById('mnu' + num)){
            document.getElementById('mnu' + num).style.display = 'none';
            num++;
        }
        st.display = actState ? 'inline' : 'none';
    }
Avatar billede twistedup Nybegynder
22. juli 2005 - 15:33 #14
Nej har ikke sat onmouseover på. Det sker ligeså snart jeg bevæger musen ind i tabellen menuen ligger i.
Avatar billede twistedup Nybegynder
22. juli 2005 - 15:34 #15
Det er væk nu...brug ikke mere tid på det roenving...tror det er cache eller så noget.
Avatar billede roenving Novice
22. juli 2005 - 15:36 #16
Virker det som det skal ?-)

-- så velbekomme '-)
Avatar billede twistedup Nybegynder
22. juli 2005 - 15:38 #17
Det virker perfekt...tak for den gode indsats!
Avatar billede roenving Novice
22. juli 2005 - 15:49 #18
?-)

-- ville du så ikke af med point ...

-- hvis du skal aflevere point skal du markere navnet i boksen til venstre før du trykker Acceptér !-)

-- se evt. http://expfaq.1go.dk/?id=3 !-)
Avatar billede twistedup Nybegynder
22. juli 2005 - 15:51 #19
...lærer det aldrig...var overbevist om du havde fået dem! Prøver igen ;)
Avatar billede twistedup Nybegynder
22. juli 2005 - 15:51 #20
Såååådan :D
Avatar billede roenving Novice
22. juli 2005 - 15:53 #21
Tak for point ;~}
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