alles ingeklapt

  • Onderwerp starter Onderwerp starter Maia
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Maia

Gebruiker
Lid geworden
19 mrt 2012
Berichten
51
Hallo,

Ik ben nog niet lang bezig met javascript en loop vast.
Ik wil het volgende bereiken:
Een aantal klikbare onderwerpen onder elkaar. Door op een onderwerp te klikken moet de bijhorende tekst uitklappen, nogmaals klikken is inklappen. Ik wil graag beginnen met alle onderwerpen ingeklapt en dat krijg ik niet voor elkaar.
Wat ik tot nu toe heb gedaan:
function in_uitklappen(id) {
var element = document.getElementById(id);
if(element.style.display == 'block')
element.style.display = 'none';
else
element.style.display = 'block';
}

en in de body
<a href="#" onclick="in_uitklappen('deel1');">Onderwerp 1</a>
<p id="deel1" class="tekst2">Tekst onderwerp 1</p>
<br />
<br />
<a href="#" onclick="in_uitklappen('deel2');">Onderwerp 2</a>
<p id="deel2">Tekst onderwerp 2</p>

Dit werkt goed (moet natuurlijk nog wel oppoetsen maar dat kan later).

Om ingeklapt te beginnen:
function ingeklapt(){
document.getElementById('deel1').style.display = 'none';
}

en
<body onload = "ingeklapt()">

Helaas, dit klapt alleen deel1 in.

Ik heb al aardig wat tijd zitten prutsen en zoeken en prutsen maar kom er niet uit.
Hopelijk wil iemand me hier een handje helpen. Alvast bedankt.
Maia
 
De functie ingeklapt verandert ook alleen "deel1". Als je ook andere delen wilt inklappen moet je dat gewoon erbij zetten:
[js]function ingeklapt(){
document.getElementById('deel1').style.display = 'none';
document.getElementById('deel2').style.display = 'none';
document.getElementById('deel3').style.display = 'none';
...
document.getElementById('deel16').style.display = 'none';
...
document.getElementById('deel243').style.display = 'none';
}[/js]

Ook kan je overwegen om met css de delen display:none te geven.
 
Oké dat is duidelijk. Ik was aan 't zoeken naar 'n manier om de functie ingeklapt zo te veranderen dat ie alle delen zou inklappen. Als dat enkel kan door het voor ieder deel apart te herhalen dan ga ik 't eerst met css proberen.
Bedankt, Maia
 
Als de id's consequent de opbouw 'deel#' hebben, kun je dit doen:
[JS]var i = 1;
var el = document.getElementById("deel" + i);
while (el != null) { //Zolang er een element met (id="deel" + i) is...
el.style.display = "none";
el = document.getElementById("deel" + (++i)); //Hoog i met één op, en haal het nieuwe element
}[/JS]

't Is overigens wel netter om dit met CSS te doen, dus probeer dat eerst zou ik zeggen ;)
 
Oké weer wat geleerd!
Ik ga het eerst met css proberen.
Bedankt, Maia
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan