23. oktober 2005 - 13:15Der er
23 kommentarer og 1 løsning
Hvordan gør jeg sådan at der kun er en åben ad gangen?
Hejsa
Jeg er ved at lave en menu, med overskrifer når man så klikker på dem skal der være et billede ud for teksten med plus på, når man så klikker skal submenuen komme frem og billedet skal blive til et minus, javascriptet skal så tjekke om andre submenuer er åbne og hvis de er skal de lukkes, så der kun kan være en åben ad gangen.
Min kode indtil videre:
<script type="text/javascript"> <!-- function menu(submenu){ menus=document.getElementById('submenu_'+submenu); menus.style.display=(menus.style.display=='none')?'block':'none'; } --> </script>
Jeg tænkte også på noget med et array hvor jeg skev alle dem der fandtes i, hvor den så lukkede alle først også bagefter åbnede en han har valgt, men er ikke så god il array's :S
Ja, jeg kan godt se fejlen nu. Jeg har jo faktisk lukket for elementet inden man kan checke på om det et åben eller lukket, så jo jeg havde ødelagt det. Det har jeg dog rådet bod på her :)
<script type="text/javascript"> <!-- var isOpen = null; function menu(submenu){ if(isOpen && isOpen!=submenu) document.getElementById('submenu_'+isOpen).style.display='none';
div'erne er oppe i hjørnet fordi du positionerer dem oppe i hjørnet med left:0px og top:0px...(?)
relative betyder bare flowkontrol, hvilket gør at left og top ikke har nogen effekt. Så hvis du vil have flowkontrol kan du undlade "position:absolute;display:none;top:0px;left:0px" fra dine styles...
<script type="text/javascript"> <!-- // initialiser variablen så der ikke er nogen åben fra starten var isOpen = null; function menu(submenu){ // hvis der er en åben menu og det ikke er den aktuelt valgte, så luk den. if(isOpen && isOpen!=submenu) document.getElementById('submenu_'+isOpen).style.display='none';
// Hvis menuen ikke er blevet lukket, så gem den til næste åben/luk-handling if(menus.style.display!='none') isOpen = submenu; else // ellers nulstil referencen, da der ikke er nogen åben menu længere. isOpen = null; } --> </script>
Så skal du også have et id på dine billeder, så de kan findes igen, når man åbner/lukker en menu. Det er lettest hvis du bruger værdien fra parameteren du sender med i kaldet til funktionen menu:
<script type="text/javascript"> <!-- // initialiser variablen så der ikke er nogen åben fra starten var isOpen = null; function menu(submenu){ // hvis der er en åben menu og det ikke er den aktuelt valgte, så luk den. if(isOpen && isOpen!=submenu) { document.getElementById('submenu_'+isOpen).style.display='none'; // sæt tilstanden for det lukkede menupunkts billede document.getElementById('img_'+isOpen).src = 'plus.gif'; }
// sæt tilstanden for det aktuelt klikkede menupunkts billede document.getElementById('img_'+submenu).src = ((menus.style.display=='none')?'minus.gif':'plus.gif');
// Hvis menuen ikke er blevet lukket, så gem den til næste åben/luk-handling if(menus.style.display!='none') isOpen = submenu; else // ellers nulstil referencen, da der ikke er nogen åben menu længere. isOpen = null; } --> </script>
<script type="text/javascript"> <!-- // initialiser variablen så der ikke er nogen åben fra starten var isOpen = null; function menu(submenu){ // hvis der er en åben menu og det ikke er den aktuelt valgte, så luk den. if(isOpen && isOpen!=submenu) { document.getElementById('submenu_'+isOpen).style.display='none'; // sæt tilstanden for det lukkede menupunkts billede document.getElementById('img_'+isOpen).src = 'REKLAME GRÅ.gif'; }
// Hvis menuen ikke er blevet lukket, så gem den til næste åben/luk-handling if(menus.style.display!='none') isOpen = submenu; else // ellers nulstil referencen, da der ikke er nogen åben menu længere. isOpen = null; } --> </script>
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.