Avatar billede lsskaarup Nybegynder
16. marts 2011 - 11:25 Der er 6 kommentarer og
1 løsning

Skal klikke 2 gange for at åbne/lukke <li>

Jeg har en stump kode, der på nogle <li> indeholdende hyperlinks kan hhv. vise og skjule disse en tilhørende <div>, men jeg har opdaget at jeg reelt skal klikke 2 gang på listpunktet, for at udført koden.

Hvad kan det skyldes og hvad skal jeg ændre?

<li>
    <a href="#" onclick="showhide('<?php echo $nyskema;?>');" style="width:335px;">
          Ny
    </a>
    <div id="<?php echo $nyskema;?>" style="display:block;">
          blah blah blah
    </div>
</li>

<script language="JavaScript" type="text/javascript">
<!--
var state = 'none';

function showhide(layer_ref) {
//alert(layer_ref);
    if (state == 'block') {
        state = 'none';
    } else {
        state = 'block';
    }

    if (document.all) { //IS IE 4 or 5 (or 6 beta)
        eval( "document.all." + layer_ref + ".style.display = state");
    }
   
    if (document.layers) { //IS NETSCAPE 4 or below
        document.layers[layer_ref].display = state;
    }
   
    if (document.getElementById &&!document.all) {
        hza = document.getElementById(layer_ref);
        hza.style.display = state;
    }
}
//-->
</script>
Avatar billede majbom Novice
16. marts 2011 - 11:45 #1
det ser sq ret gammelt ud det script dér - jeg håber ikke der er nogen der bruger IE4 mere

prøv at ret din funktion til:

function showhide(layer_ref) {
    elm = document.getElementById(layer_ref);
    if (elm.style.display == 'block') {
        state = 'none';
    } else {
        state = 'block';
    }

    elm.style.display = state;
}
Avatar billede lsskaarup Nybegynder
16. marts 2011 - 12:07 #2
Jeps, det hjælp, takker.
Avatar billede majbom Novice
16. marts 2011 - 12:27 #3
selv tak - og så kan du jo lige fjerne

var state = 'none';

osse...
Avatar billede majbom Novice
16. marts 2011 - 12:27 #4
svar..
Avatar billede lsskaarup Nybegynder
16. marts 2011 - 15:26 #5
Det har jeg også gjort, men det virkede slet ikke med det gamle script, hvis jeg fjernede det.
Avatar billede majbom Novice
16. marts 2011 - 18:53 #6
nej det er klart.

men det giver mening at du skulle klikke 2 gange, for du satte display til block hvis state var none og. og i og med at state var none og din div allerede var vist (display = block) satte du den til block igen.

håber det gav mening

det er under alle omstændigheder nemmere at styre ved at tjekke på værdien af display, i stedet for at bruge en variabel.

det gør det også nemmere at bruge scriptet på forskellige divs...
Avatar billede majbom Novice
16. marts 2011 - 18:53 #7
og tak for point i øvrigt :)
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