[JS] 2x script in post werkt niet

Pagina: 1
Acties:

  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 01-12 17:00
Bij Wetenschapsforum hebben we de custom-BBcode [hide] toegevoegd. Hiermee de gebruikers eenvoudig delen van berichten verbergen en openklapbaar maken voor de lezers. Erg handig voor bij cursussen ed. Het gaat echter niet helemaal goed. Als we de code 2x in hetzelfde bericht gebruiken wordt, ongeacht op welke "laat zien" link geklikt wordt, alleen de bovenste uitgeklapt. Zie voor een voorbeeld deze link: klik.

We gebruiken de volgende code:
JavaScript:
1
<div><a href="javascript: void(0);" onClick="var spoiler = this.parentNode.parentNode.getElementsByTagName('dd')[0]; if ( spoiler.style.display == 'none' ) { spoiler.style.display = ''; this.innerHTML = 'Verberg'; } else { spoiler.style.display = 'none'; this.innerHTML = 'Verborgen inhoud'; };">Verborgen inhoud</a><dd style="display: none;border:solid 1px;border-color:#C1CEF3;background-color:#E0E5F5;margin:3px">{content}</dd></div>

Dit wordt vervolgens gebruikt als [hide]{content}[/hide]

We hebben al het een en ander met divjes gespeeld omdat we het graag in de tekstregel laten beginnen ipv op een nieuwe regel, maar dat ging ook niet lekker. Eerste probleem wat we nu willen oplossen is het mogelijk maken van meerdere [hide]-tags. We komen er echter niet uit, hebben jullie een tip?

Tjolk is lekker. overal en altijd.


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Ik denk dat je 1x teveel een parentNode doet. Een alternatief zou ook zijn this.nextSibling. Note overigens dat dit oneigenlijk gebruik van het DD-element is - dit is niet HTML conforming.
(En A-elementen gebruiken voor iets dat geen link is is ook niet netjes).

[ Voor 17% gewijzigd door crisp op 12-07-2007 17:01 ]

Intentionally left blank


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
ik heb het niet heel uitgebreid bestudeerd, maar zorgt de [0] in getElementsByTagName('dd')[0]; er niet voor dat je altijd het eerste element pakt?

  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

offtopic:
Tip?

In die code zet je de display van de tag dd (die je ook goor gebruikt) op '' (niks dus), als die op none staat.
Oftewel, als je meerdere dd tags hebt krijg je daar problemen mee. Wat ik dus zou doen als ik een spoiler ding zou willen is: gewoon een span tag die ik een name geef, spoiler1, spoiler2 enzo.
Als iemand een bericht post kijk je hoevaak die [hide] er in voor komt en die vervang je dan met die spoiler code waar de naam bij opteld.

Snap je het nog? Volgens mij moet er al een spoiler tag bestaan voor ipboard, zoek anders nog eens met google. En anders kan je nog kijken of je een mod voor phpbb kunt instaleren, want die bestaan wel (en ipboard heeft nu de functie om andere mod's te ondersteunen staat d'r op de website

[ Voor 0% gewijzigd door ibmos2warp op 12-07-2007 17:09 . Reden: Weer eens lekker laat... ]

Ik weet alles van niks
Vind Excel ongelovelijk irritant.


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 23:49
ibmos2warp schreef op donderdag 12 juli 2007 @ 17:09:
Wat ik dus zou doen als ik een spoiler ding zou willen is: gewoon een span tag die ik een name geef, spoiler1, spoiler2 enzo.
Als iemand een bericht post kijk je hoevaak die [hide] er in voor komt en die vervang je dan met die spoiler code waar de naam bij opteld.
Genummerde name en id-attributen zijn haast nooit een goed idee. Maar in dit geval al helemaal niet. Op het moment dat er een post geplaatst wordt weet je namelijk niet hoeveel spoilertags er zijn in alle posts die op een pagina worden weergegeven.
De netste oplossing is al door crisp gegeven in de vorm van een nextsibling:
HTML:
1
2
3
4
<div>
 <span onclick="this.nextSibling.style.display='block'">show</span>
 <div style="display: none">message</div>
</div>

[ Voor 0% gewijzigd door T-MOB op 12-07-2007 19:58 . Reden: [html] dut ut nie ]

Regeren is vooruitschuiven


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

T-MOB schreef op donderdag 12 juli 2007 @ 19:57:
[...]

Genummerde name en id-attributen zijn haast nooit een goed idee. Maar in dit geval al helemaal niet. Op het moment dat er een post geplaatst wordt weet je namelijk niet hoeveel spoilertags er zijn in alle posts die op een pagina worden weergegeven.
De netste oplossing is al door crisp gegeven in de vorm van een nextsibling:
HTML:
1
2
3
4
<div>
 <span onclick="this.nextSibling.style.display='block'">show</span>
 <div style="display: none">message</div>
</div>
Let op dat in bepaalde browsers hier de newline de nextSibling is ;)

Intentionally left blank


  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

T-MOB schreef op donderdag 12 juli 2007 @ 19:57:
Genummerde name en id-attributen zijn haast nooit een goed idee. Maar in dit geval al helemaal niet. Op het moment dat er een post geplaatst wordt weet je namelijk niet hoeveel spoilertags er zijn in alle posts die op een pagina worden weergegeven.
Ohhhhh, nu je het zeg.... Inderdaad, daar had ik niet aan gedacht. 7(8)7

Ik weet alles van niks
Vind Excel ongelovelijk irritant.


  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 01-12 17:00
Mja, ik zal de eerste zijn die erkent dat de code door alle aanpassingen inmiddels zo lelijk is als....(let's not go there ;) )

@ibmos2warp: er is inderdaad al een spoilertag voor IPB, standaard ingebouwd zelfs, maar die zet gewoon een zwart blok over de tekst. Bij plaatjes werk dat al niet en dat geeft problemen. En zeker bij langere uitwerkingen wordt dat natuurlijk irritant en lelijk. Die hide (een omgebouwde spoiler van phpBB) is veel handiger voor hetgeen wij willen (als het werkt dan).

@Crisp: die parentNode weghalen deed het 'm, bedankt. Ik heb nog even gekeken naar de originele code die we hadden gepakt, maar daar staat het ook 2x in, Ik snap niet dat die fout door software-ontwikkelaars als phpBB gemaakt wordt eigenlijk...

Tjolk is lekker. overal en altijd.


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 07:20

BCC

SFB schreef op donderdag 12 juli 2007 @ 22:04:
Ik snap niet dat die fout door software-ontwikkelaars als phpBB gemaakt wordt eigenlijk...
Tja, programmeurs zijn ook maar mensen. Zelfs de programmeurs van phpBB :)

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.

Pagina: 1