Hoi Kaffo,
Wat er moet gebeuren, is dat de code op dezelfde plek moet komen te staan als de knop. Tegelijkertijd met het zichtbaar maken van de code moet dan de knop van het toneel verdwijnen. Er is dus een "dubbele show/hide" nodig: als de één aan staat, staat de ander uit, en omgekeerd.
Daarmee kunnen de knop (de <input>-button) en de regel met de kortingscode pal onder elkaar staan in de html: één van de twee is altijd maar zichtbaar, en ze zitten dan op dezelfde plaats.
Maar eerst moet er nog wat anders gebeuren: er valid html van maken!

D.w.z.:
- Er moet een Doctype boven komen.
- Er moet een <meta> met de "charset" in de <head> komen.
- De aanduiding <script language="JavaScript"> is verouderd/fout en moet worden: <script type="text/javascript">.
- Een <input>-element mag niet los in de <body> staan, het moet in een ander element zitten.
- Achter de onclick="..." staat een ; die er niet hoort.
Verder wordt het (on)zichtbaar maken in je gebruikte code met de
visibility-eigenschap geregeld. Dat heeft als nadeel dat het element wel onzichtbaar wordt, maar het oppervlak van het element blijft bestaan: daar kan niets anders komen.
Het kan beter met de
display-eigenschap: zet je die op {display: none;} dan is het hele element weg, en neemt ook geen ruimte in beslag.
In de html kan het bv. worden:
HTML:
<div id="winkel-1" class="kortingscode">
<input type="button" value="Toon kortingscode!" onclick="showcode('winkel-1')">
<p class="code">
<span><a href="#" onclick="hidecode('winkel-1'); return false">X</a></span>
Uw code is: <strong>Helpmij-1526</strong> Kopieer de code en <a href="#">Ga naar deze winkel</a>!
</p>
</div>
Bij de <a href="#">Ga naar deze winkel</a> moet de link naar die winkel staan.
De X is hierbij een klein knopje om de code weer uit te zetten en de knop weer te tonen.
De <a href="#"> bij het X-knopje blijft zo: na het klikken op het kruisje moet nergens naar toe gegaan worden.
Het bijbehorende javascript kan zijn:
[JS]<script type="text/javascript">
//<![CDATA[
function showcode(id) {
document.getElementById(id).getElementsByTagName('input')[0].style.display='none';
document.getElementById(id).getElementsByTagName('p')[0].style.display='block';
}
function hidecode(id) {
document.getElementById(id).getElementsByTagName('input')[0].style.display='inline-block';
document.getElementById(id).getElementsByTagName('p')[0].style.display='none';
}
//]]>
</script>[/JS]
Het beste is om het javascript helemaal op het eind van de pagina-code te zetten, vlak voor de </body></html>.
Het werkt als volgt:
- Eerst wordt met document.getElementById(id) het blok van de betreffende winkel opgeroepen (via de id die in de html is opgegeven).
- Dan wordt het eerste (en enige) input-element binnen dat blok genomen: getElementsByTagName('input')[0]. In javascript is [0] het eerste element, [1] het tweede element van die soort, enz.
- Die input wordt onzichtbaar gemaakt: style.display='none'.
- Vervolgens wordt de <p>-regel van het code-blok genomen en zichtbaar gemaakt (die staat bij het openen van de pagina via de css op onzichtbaar).
- Klik je op een kruisje, dan gebeurt het omgekeerde.
- De rest is een kwestie van vormgeving met css-opmaak.
Als voorbeeld:
Met vriendelijke groet,
CSShunter
[edit]PS[/edit]
Met een wat ondoorzichtiger javascript kan je volstaan met onclick="showcode(this)" en onclick="hidecode(this)" voor elke winkel, in plaats van dat je tekens een andere id moet invullen.