Avatar billede rudi1234 Nybegynder
17. januar 2003 - 17:06 Der er 4 kommentarer og
1 løsning

Skjul flere ting på een gang

Jeg vil gerne kunne tænde og slukke for flere elementer på en gang. Koden allernederst er god, bortset fra at den ikke kan skjule flere elementer ad gang hvis de IKKE ligger dev siden af hinanden (dvs. hvis de ikke kan ligge inden under den samme DIV).

Hvordan kan man slukker for flere elementer i ét klik?

<html>
<head>
<script language="javascript">   
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false

function showhide(id) {
if (ns4) {
    if (document.layers[id].visibility == "show"){
        document.layers[id].visibility = "hide";
    } else {
        document.layers[id].visibility = "show";
    }
} else if (ie4) {
    if (eval("document.all." + id).style.display == "none")
        eval("document.all." + id).style.display = "";
    else
        eval("document.all." + id).style.display = "none";
    }
}


    </script>
</head>

<body>
<a href="#" onClick="showhide('Layer1')">Klik her</a>
<a href="#" onClick="showhide('Layer2')">Klik her</a>
<a href="#" onClick="showhide('Layer3')">Klik her</a>
<h1>Øverst</h1>
    <div id="Layer1" style="display:none;">Denne tekst vises når der klikkes</div>
   
    <div id="Layer2" style="display:none;">Lag 2:Denne tekst vises når der klikkes</div>
    <div id="Layer3" style="display:none;">Lag 3: Denne tekst vises når der klikkes</div>
<h3>Nederst</h3>
</body>
</html>
Avatar billede Slettet bruger
17. januar 2003 - 17:30 #1
<a href="java script:showhide('Layer1')" onclick="showhide('Layer2')">Klik her for at se 1 og 2</a>

:)
Avatar billede Lasse Novice
17. januar 2003 - 17:30 #2
Hvorfor laver du ikke noget med at

showhide('1|2|4')

i funktionen showhide, goer du foelgende(pseudokode)

split paa | saa det splittet kommer ud i et array

dvs. dit array indeholder 1,2,4

derefter itererer du over alle elementerne i arrayet
i denne iteration tilfoejer du (i starten) "Layer" og goer som goer allerede
Avatar billede Lasse Novice
17. januar 2003 - 17:35 #3
her er der noget der kan hjaelpe lidt paa det:
var text = "1|2|4"
var arr = text.split("|")
for(i=0; i< arr.length;i++)
{
alert("Layer" + arr[i])
}
Avatar billede Slettet bruger
17. januar 2003 - 17:37 #4
jeg forstod nok forkert :)
Avatar billede Lasse Novice
17. januar 2003 - 17:38 #5
ja for at pensle det totalt ud:

<html>
<head>
<script language="javascript">   
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false

function showhide(idArr) {
var arr = idArr.split("|")
for(i=0; i< arr.length;i++)
{
var id = "Layer" + arr[i]
if (ns4) {
    if (document.layers[id].visibility == "show"){
        document.layers[id].visibility = "hide";
    } else {
        document.layers[id].visibility = "show";
    }
} else if (ie4) {
    if (eval("document.all." + id).style.display == "none")
        eval("document.all." + id).style.display = "";
    else
        eval("document.all." + id).style.display = "none";
    }
}
}


    </script>
</head>

<body>
<a href="#" onClick="showhide('1|2')">Klik her</a>
<a href="#" onClick="showhide('2|3')">Klik her</a>
<a href="#" onClick="showhide('2|3')">Klik her</a>
<h1>Øverst</h1>
    <div id="Layer1" style="display:none;">Denne tekst vises når der klikkes</div>
   
    <div id="Layer2" style="display:none;">Lag 2:Denne tekst vises når der klikkes</div>
    <div id="Layer3" style="display:none;">Lag 3: Denne tekst vises når der klikkes</div>
<h3>Nederst</h3>
</body>
</html>
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