Avatar billede dudez Nybegynder
07. juni 2005 - 10:40 Der er 3 kommentarer og
1 løsning

Menutræ virker ikke føste gang

Dette script virker næsten, men der er et lille problem men kun første gang man kører scriptet.

Man skal trykke 2 gange på enden Menu punk 1 eller 2, men derefter behøver man kun at trykke 1 gang.

Jeg er løbet tør for ideer, håber en eller anden her inde kan hjælpe.

<style type="text/css">
div.submenu        {display: none;}
</style>


<script type="text/javascript" language="javascript">

function doToggleMenu(id) {
    var temp = document.getElementById(id);
    if(temp.style.display == "none")
        temp.style.display = "block";
    else
        temp.style.display = "none";

/*    var divContainer = document.getElementsByTagName("div");
    var i;
    for(i = 0; i < divContainer.length; i++) {
        if(divContainer[i].className == "submenu")       
            divContainer[i].style.display = "none";       
    }*/
}


    </script>


<div id="menu1"><a href="java script:doToggleMenu('submenu1');">Menu punkt 1</a></div>
<div class="submenu" id="submenu1">- punkt 1<br />- punkt 2</div>
<div id="menu2"><a href="java script:doToggleMenu('submenu2');">Menu punkt 2</a></div>
<div class="submenu" id="submenu2">- punkt 1<br />- punkt 2</div>
Avatar billede fennec Nybegynder
07. juni 2005 - 12:45 #1
Smid stylet direkte på elementet. Har oplever at Javascript ikke får de rigtige værdier, når det sker gennem class.

<style type="text/css">
div.submenu {}
</style>


<script type="text/javascript" language="javascript">

function doToggleMenu(id) {
    var temp = document.getElementById(id);
    if(temp.style.display == "none")
        temp.style.display = "block";
    else
        temp.style.display = "none";

/*    var divContainer = document.getElementsByTagName("div");
    var i;
    for(i = 0; i < divContainer.length; i++) {
        if(divContainer[i].className == "submenu")       
            divContainer[i].style.display = "none";       
    }*/
}


    </script>


<div id="menu1"><a href="java script:doToggleMenu('submenu1');">Menu punkt 1</a></div>
<div style="display:none" class="submenu" id="submenu1">- punkt 1<br />- punkt 2</div>
<div id="menu2"><a href="java script:doToggleMenu('submenu2');">Menu punkt 2</a></div>
<div style="display:none" class="submenu" id="submenu2">- punkt 1<br />- punkt 2</div>
Avatar billede fennec Nybegynder
07. juni 2005 - 12:47 #2
.. Det er kun display stylen, som skal direkte på elementet, alle andre formateringer du vil lave, kan du stadig smide i et CSS. Javascript har det bare med ikke at hente værdierne, medmindre de er direkte på elementet.
Avatar billede roenving Novice
07. juni 2005 - 13:54 #3
-- eller ændr den indledende forespørgsel på synligheden fra

    if(temp.style.display == "none")

til:

    if(temp.style.display != "block")

-- og fennec har fuldstændig ret mht. til det at finde propertyen på elementet, for det er jo faktisk ikke elementet, som har fået den property, men den klasse af elementer, så det vil kun være, hvis du har sat en værdi med javascript, eller det direkte er en inline style !-)

-- og det gælder iøvrigt også for alle andre style-properties, som er sat via et stylesheet, uanset det er placeret indeni eller udenfor dokumentet !o]
Avatar billede dudez Nybegynder
23. juni 2005 - 09:44 #4
Super - nu virker det som det skal - Tak for hjælpen
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

IT-JOB

TD SYNNEX Denmark ApS

Sales Coordinator

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger Proces Driver i Hvidovre

KMD A/S

Projektleder