Het volgende werkt in Firefox, Opera en IE. Maar niet in Safari. Wie kan me vertellen waarom?
Het onderwerp heb ik wat aangepast maar het principe is hetzelfde:
Er is een lijstje van auto's. Op elke auto kan geklikt worden zodat de eigenschappen eronder zichtbaar worden middels de style-eigenschap display, de interne div's worden dan zichtbaar.
Ik heb voor <a> gekozen omdat het dan duidelijker wordt dat de items aangeklikt kunnen worden. De <a>'s zijn dus altijd zichtbaar, de div's alleen na het onclick event. Zo ziet zo'n lijstje eruit:
zo'n lijstje kan zich dus oneindig herhalen (voor andere auto's uiteraard).
Dan volgt er een scriptje met het onclick event. De functie getElementsByClass is een zelf geschreven functie die alle elementen met de opgegeven className in een array teruggeeft.
(Ik weet het: het opvragen van de parentNode in aExpand is niet echt nodig)
Alleen Safari weigert de div's weer te geven (dus uit te klappen). En returned bovendien geen false omdat er een # achter het url verschijnt. Wie weet waar het probleem schuilt of heeft er een oplossing?
Code kan tussen code tags voor de overzichtelijkheid
Het onderwerp heb ik wat aangepast maar het principe is hetzelfde:
Er is een lijstje van auto's. Op elke auto kan geklikt worden zodat de eigenschappen eronder zichtbaar worden middels de style-eigenschap display, de interne div's worden dan zichtbaar.
Ik heb voor <a> gekozen omdat het dan duidelijker wordt dat de items aangeklikt kunnen worden. De <a>'s zijn dus altijd zichtbaar, de div's alleen na het onclick event. Zo ziet zo'n lijstje eruit:
HTML:
1
2
3
4
5
6
7
8
| <div class="auto" id="4253"> <a href="#" class="titel"> <div class="merk" id="merk_4253">Ford</div> <div class="type" id="type_4253">focus</div> </a> <div class="kleur" id="kleur_4253">rood</div> <div class="bouwjaar" id="bouw_4253">2005</div> </div> |
zo'n lijstje kan zich dus oneindig herhalen (voor andere auto's uiteraard).
Dan volgt er een scriptje met het onclick event. De functie getElementsByClass is een zelf geschreven functie die alle elementen met de opgegeven className in een array teruggeeft.
(Ik weet het: het opvragen van de parentNode in aExpand is niet echt nodig)
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| automerken = function() { var autos= getElementsByClass("titel"); for(var i=0; i < merken.length; i++) merken[i].onclick=aExpand; } aExpand=function(e) { var merk = this.parentNode; var autos = getElementsByClass("autos", merk); if(autos[0].style.display == "none") autos[0].style.display = "block"; else autos[0].style.display = "none"; return false; } |
Alleen Safari weigert de div's weer te geven (dus uit te klappen). En returned bovendien geen false omdat er een # achter het url verschijnt. Wie weet waar het probleem schuilt of heeft er een oplossing?
Code kan tussen code tags voor de overzichtelijkheid
[ Voor 4% gewijzigd door BtM909 op 31-05-2007 14:36 ]