<script type="text/javascript"> <!-- function reset() { for (var number = 1; number <= 10; number++) { var elm = document.getElementById("movout" + number); elm.style.visibility = "hidden"; elm.style.display = "none"; var elm = document.getElementById("mov" + number); elm.style.visibility = "visible"; elm.style.display = "block"; } } function checkBox(number) { var elm = document.getElementById("movout" + number); elm.style.visibility = "visible"; elm.style.display = "block"; var elm = document.getElementById("mov" + number); elm.style.visibility = "hidden"; elm.style.display = "none"; }
//--> </script>
Det virker fint til at folde ud og lukke alle med... men jeg vil gerne at man kun kan have én foldet ud af gangen... jeg forestiller mig at køre reset() inden checkBox(number)... men jeg har prøvet at indsætte reset(); som første linie i checkBox(number), men det gør bare at der intet sker...
du kan lave en variabel der holder øje med om en er folde ud... her er et eksembel.. er ikke helt famillijør med syntaksen men nog i denne stil...
<script type="text/javascript"> <!-- var ud = 0; function reset() { if(var == 0){ for (var number = 1; number <= 10; number++) { var elm = document.getElementById("movout" + number); elm.style.visibility = "hidden"; elm.style.display = "none"; var elm = document.getElementById("mov" + number); elm.style.visibility = "visible"; elm.style.display = "block"; var = 1; }else{ } } } function checkBox(number) { var elm = document.getElementById("movout" + number); elm.style.visibility = "visible"; elm.style.display = "block"; var elm = document.getElementById("mov" + number); elm.style.visibility = "hidden"; elm.style.display = "none"; var = 0; }
nå, jeg fandt ud af at det skyldes en fejl i reset funktionen. Den kørte altid 10 gange, og når der var færre end 10 elementer (som i mit eksempel) døde js'en på det! I stedet lavede jeg den sådan her, hvor den tjekker om elementet eksisterer før den prøer at ændre på det (og der med ikke laver fejl)
function reset() { for(var div=1; div <= 10; div++) { var dividout = "movout" + div var elm = document.getElementById(dividout); if(elm != undefined && elm != '') { elm.style.visibility = "hidden"; elm.style.display = "none"; } } }
For det første er der vel ingen grund til at gemme elementet på to måder (både display og visisbility). Dernæst er der ingen grund til at bladre alle elementerne igennem, når der skal gemmes. Du kan nøjes med at huske den, der er vist:
<script type="text/javascript"> var aOpen = null; function checkBox(number) { if (aOpen) { aOpen[0].style.display = "none"; aOpen[1].style.display = "block"; } var elm = document.getElementById("movout" + number); elm.style.display = "block"; var elm2 = document.getElementById("mov" + number); elm2.style.display = "none"; aOpen = [elm, elm2]; } </script>
/mvh </bole>
Synes godt om
Ny brugerNybegynder
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.