Avatar billede cmau Nybegynder
25. marts 2007 - 16:39 Der er 10 kommentarer og
1 løsning

Kun en div åben af gangen

Hej eksperter

Jeg har lavet:
http://trackinfo.dk/index.php?page=information

Hvor i klikker på linksene ud for generelt, åbner en div sig, men den gamle lukker ikke. Hvordan kan jeg gøre sådan at kun en kan være åben af gangen?

Mit javascript er følgende:
<SCRIPT type="text/javascript">
function menu(submenu){
    menus=document.getElementById('submenu_'+submenu);
    menus.style.display=(menus.style.display=='none')?'block':'none';
}
</SCRIPT>
Avatar billede crazysnap Seniormester
25. marts 2007 - 17:01 #1
Hej cmau,

Du kan f.eks. gemme den tidligere (åbne) submenu i en global variabel. Når der så klikkes på et link fjerner den først den tidligere submenu og viser den nye:


<script type="text/JavaScript">
//reference til den åbne submenu
var prevMenu;

function menu(submenu)
{               
    menus=document.getElementById('submenu_'+submenu);
   
    if(prevMenu != null && prevMenu != menus)
      prevMenu.style.display = 'none';
       
    menus.style.display=(menus.style.display=='none')?'block':'none';
    prevMenu = menus;
}
</script>


Håber det var det du søgte! :)


Mvh.

- Snap
Avatar billede cmau Nybegynder
25. marts 2007 - 17:19 #2
Det er sådan det skal laves :), men men hvordan får man det til at tage højde for at der er en åben til at starte med?. submenu_1.
Avatar billede crazysnap Seniormester
25. marts 2007 - 17:33 #3
Hej cmau,


Det var godt at høre! Og der er sådan set mange måder at løse dit næste problem på, men en af dem er at sætte alle dine styles til 'none' på hvert submenu element og tilføje et metode-kald på onload event'en på body'en der afgør hvilken en af submenuerne der skal være åben fra start af:

<body onload="menu('1');">



Mvh.  :)


- Snap
Avatar billede cmau Nybegynder
25. marts 2007 - 18:42 #4
Er det muligt at lave en onload i javascriptet, så den ikke skla være i body elementet?
Avatar billede michael_stim Ekspert
25. marts 2007 - 18:44 #5
window.onload (tror jeg nok)
Avatar billede crazysnap Seniormester
25. marts 2007 - 18:57 #6
Hej cmau,


Det kan du sagtens jo:  :)

<script>
window.onload = new function() { menu('1'); };
</script>


Mvh.

- Snap :)
Avatar billede crazysnap Seniormester
25. marts 2007 - 19:05 #7
Og lige lidt pænere og det hele samlet:  :)


<script type="text/JavaScript">
var prevMenu;

function init()
{
    menu('1');
}

function menu(submenu)
{             
    menus=document.getElementById('submenu_'+submenu);
   
    if(prevMenu != null && prevMenu != menus)
      prevMenu.style.display = 'none';
     
    menus.style.display=(menus.style.display=='none')?'block':'none';
    prevMenu = menus;
}

window.onload = init;
</script>


Mvh.

- Snap :)
Avatar billede crazysnap Seniormester
25. marts 2007 - 19:07 #8
Og hov, det gik lidt for hurtigt i første eksempel hvis du bruger den:


window.onload = new function() { menu('1'); };


skal ændres til:


window.onload = function() { menu('1'); };


:)
Avatar billede roenving Novice
25. marts 2007 - 22:26 #9
>>crazy

-- leg lige noget med det, for en funktion, der skal erklæres med new, er et grundobjekt, dvs, at du skal bruge:

new Function

-- selv er jeg heldigvis sluppet udenom store problemer med den slags, så hjørnerne har jeg ikke fod på !-)
Avatar billede cmau Nybegynder
26. marts 2007 - 13:55 #10
tak for hjælpen crazysnap
Avatar billede crazysnap Seniormester
26. marts 2007 - 16:25 #11
Det var så lidt og tak for pointene! :)


Mvh.

- Snap
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