Avatar billede eikhorsholm Nybegynder
18. februar 2005 - 23:00 Der er 15 kommentarer og
1 løsning

Dropdown-boks under link.

Jeg har en række med en masse links i, som jeg benytter som menu.
Hvis et menupunkt har nogle underpunkter, benytter jeg pt. nedenstående kode til at vise en boks under, med underpunkterne:

function dropdown(id) {
  if (document.getElementById(id).style.visibility == "visible") {
    document.getElementById(id).style.visibility = "hidden";
  } else {
    document.getElementById(id).style.visibility = "visible";
  }
}

Mit problem er nu, at få denne boks til at befinde sig lige under mit link, som boksen tilhøre. Desuden vil jeg gerne have, således at der kun kan være én boks synlig af gangen. Så når man klikker på et link, som åbner en boks, så lukkes evt. andre åbne.

Håber der er nogen, som kan hjælpe mig videre med mit problem. At jeg har formuleret spørgsmålet ordentligt og at der er nok point :-)
Avatar billede eikhorsholm Nybegynder
18. februar 2005 - 23:11 #1
P.S. Det skal lige tilføjes, at jeg ikke kender den venstre margen, til hvor mine forskellige links befinder sig. For ellers ville jeg bare kunne tilføje margen-left: ?px; til mine bokse.
Avatar billede roenving Novice
18. februar 2005 - 23:29 #2
Hvis du kun vil vise een ad gangen, er det mest fremgangsrige nok at skjule den, som var vist i forvejen, f.eks. som vist her: http://www.eksperten.dk/spm/414464 !-)

-- der er mange andre mulige skemaer, men så skal du specificre nærmere !o]
Avatar billede eikhorsholm Nybegynder
18. februar 2005 - 23:46 #3
Det ser ud til at løse problemet med kun, at få vist en boks ad gangen :-)
Så mangler jeg bare det sværeste (tror jeg), med at få vist boksen under det tilhørende link. Det kan jo være forskelligt fra browser til browser, hvor linket befinder sig (jeg tænker på, at jeg ellers kunne måle afstanden fra et screenshot, men det virker som en meget forkert løsning).
Avatar billede roenving Novice
18. februar 2005 - 23:51 #4
Ideen i ovenstående er, at man skjuler det inde i samme elemnet, så det kan ikke fjernes i afstand ...

Men hvis du vil noget andet, må du netop specificere !-)
Avatar billede roenving Novice
18. februar 2005 - 23:56 #5
Måske har du en vandret menu i tankerne ...

Det kan også uden problemer produceres, hvis du ikke vil benytte dig af en af de tilgænglige menuer, som findes allerede, f.eks. den som bruges her på sitet, kig på http://www.dhtmlcentral.com/projects/coolmenus/ !o]
Avatar billede eikhorsholm Nybegynder
19. februar 2005 - 00:03 #6
Jeg tænker på en vandret menu. Troede det fremgik af, at jeg havde en masse links i en række :-)

Kigger lige på det link, så vender jeg tilbage.
Avatar billede eikhorsholm Nybegynder
19. februar 2005 - 00:05 #7
Jeg vil vove at påstå, at dit link henviser til at løsning, som er noget for avanceret til det jeg søger.

Det eneste jeg egentlig manger, foruden mit kodeeksempel og din løsning på mit andet problem er det med hvor boksene under skal placeres i browservinduet.
Avatar billede eikhorsholm Nybegynder
19. februar 2005 - 00:06 #8
Min række med links, er bare en alm. tabel-række med en masse celler, hvor hver celle indeholder et link. Celle-bredden afhænger af indholdet i cellen.
Avatar billede roenving Novice
19. februar 2005 - 00:09 #9
Fordelen ved coolmenu er, at den virker problemfrit i alle browsere, jeg kender ...
Avatar billede roenving Novice
19. februar 2005 - 00:15 #10
Måske denne tilpasning:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Simpel menu</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="roenving,http://www.eksperten.dk/spm/414464">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.menupunkt{font-family:tahoma,verdana,arial,sans-serif;cursor:pointer;color:#9d52be;background:#fff;font-weight:800;font-style:italics;font-size:10px;width:250px;vertical-lign:top;}
.menu{display:none;padding-left:5px;}
.menu a{text-decoration:none;}
.menu a:link{color:black;}
.menu a:visited{color:black;}
.menu a:hover{color:red}
.menu a:active{color:red}
table td{vertical-align:top;}
</style>
<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
      document.getElementById('o'+divs[i].id+'pic').src = "../img/plus.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"../img/minus.gif":"../img/plus.gif";
}
</script>
</head>
<body>
<table>
  <tr>
    <td><div id="omenu1" class="menupunkt" onclick="showMenu(this);">
<img id="omenu1pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 1
  <div id="menu1" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
    </td>
    <td>
<div id="omenu2" class="menupunkt" onclick="showMenu(this);">
<img id="omenu2pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 2
  <div id="menu2" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
    </td>
    <td>
<div id="omenu3" class="menupunkt" onclick="showMenu(this);">
<img id="omenu3pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 3
  <div id="menu3" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
    </td>
    <td>
<div id="omenu4" class="menupunkt" onclick="showMenu(this);">
<img id="omenu4pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 4
  <div id="menu4" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
    </td>
    <td>
<div id="omenu5" class="menupunkt" onclick="showMenu(this);">
<img id="omenu5pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 5
  <div id="menu5" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
    </td>
  </tr>
</table>
</body>
</html>
Avatar billede eikhorsholm Nybegynder
19. februar 2005 - 11:35 #11
Det ser rigtig godt ud. Er det muligt, du gider forklare hvad det præcis er der foregår? Altså bare sådan lige hurtig, om hvorledes den ved hvor boksene skal placeres under links'ne?
Avatar billede eikhorsholm Nybegynder
19. februar 2005 - 11:47 #12
Jeg tror jeg har luret koden. Det er vel fordi, boksn'e nedenunder befinder sig i samme lag (div), at de ved hvor de skal placeres?
Er det muligt, at lave koden uafhængig af billedet (img.gif), så det kan er nødvendigt med et link?
Avatar billede eikhorsholm Nybegynder
19. februar 2005 - 12:04 #13
Lavede den uafhængig af billedet med nedenstående kode:
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
}

Hvis du laver et svar, så får du pointene. Du har hjulpet utrolig meget. Tak! :-)
Avatar billede roenving Novice
19. februar 2005 - 13:57 #14
Jamen så velbekomme '-)
Avatar billede roenving Novice
19. februar 2005 - 15:13 #15
-- og tak for point ;~}
Avatar billede eikhorsholm Nybegynder
19. februar 2005 - 20:09 #16
Velbekommen -- og tak for svar ;-)
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