Archief - Spoiler klapt niet altijd open na één klik

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

hyzy007

Legacy Member
Hallo, ik heb dus een probleem:
Ik ben bezig met een website te maken voor een vriend voor zijn fuif. Graag had ik een spoiler effect gebruikt. er zijn 3 zalen, dus de artiesten zouden uiteindelijk met 3 naast elkaar komen te staan en als je dan op een naam van een artiest klikt zou iets moeten opschuiven zodat er wat meer informatie over die artiest te voorschijn zou komen.

Dit lukt al aardig goed, alleen heb ik dit probleem nog: Als je nu 2x (of meer) details van artiest wil bekijken moet je soms 2x klikken en soms 1x klikken op de naam. Geen idee hoe dat komt, maar ik had graag gehad dat het altijd 1x klikken zou zijn.

Iemand een idee?

Site:
Voorbeeldje van het probleem

Javascript code:
Code:
<script language="javascript">
<!--

var state = 'none';
function showhide(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>

Alvast bedankt!

Maser00

Legacy Member
Ik heb zo ook eens iets gelijkaardigs gebruikt:

Code:
<script type="text/javascript">
 function unhide(divID) {
 var item = document.getElementById(divID);
 if (item) {
 item.className=(item.className=='hidden')?'unhidden':'hidden';
 }
 }
 </script>

Bijvoorbeeld hier:
Code:
<li><a href="javascript:unhide('prijs');">Hoeveel kost het programma?</a>
<div id="prijs" class="hidden">Het programma is helemaal gratis, en dat blijft het altijd!</div></li>

EDIT: bekijk dit eens: http://www.randomsnippets.com/2008/02/12/how-to-hide-and-show-your-div/

Dieterg

Legacy Member
Dit is een logische fout, je declareert 'state' buiten uw functie. Als je dus klikt op een artiest opent die zoals je zelf wilt (state = nu block). Als je dan op een andere artiest klikt, wordt state 'none' dus je zal nog eens moeten klikken om state terug naar block te krijgen.

Je zou dus de huidige state van uw div moeten opvragen. Iets zoals hieronder:
Code:
<script language="javascript">

function showhide(layer_ref) {

var style = document.getElementById(layer_ref).style;
var state = style.getAttribute('display');

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>

Let op: dit is niet getest, kan zijn dat er syntax foutjes inzitten!

Shaddix

Legacy Member
Ik gebruik voor spoilers meestal dezelfde techniek als in deze tutorial: klik.
Dat is met JQuery dus dat ziet er in een keer goed uit ook! En het is minder code.

Gprb_

Legacy Member
Voorbeeld

hier is mijn 'site' voor school geweest , kijk bij wireshark en oefeningen en kijk daar eens naar de broncode :)

succes

hyzy007

Legacy Member
Bedankt voor jullie snelle en goede antwoorden!

met de eerste javascript oplossingen geraakte ik helaas meer en meer in de knoop..
uiteindelijk ben ik dan gegaan oor de JQuery oplossing van Shaddix, via de tutorial die hij mij gaf :)
Werkt als een bus!
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan