Mehrere PHP Spoiler
7siech
- php
Hallo zusammen.
Ich würde gerne mehrere Spoiler einfügen, die sich öffnen, wenn man die checkbox anklickt.
Wenn ich eine 2. checkbox einfüge funktioniert es leider nicht. was muss ich schreiben, um einen 2. spoiler zu machen?
gibt es eine möglichkeit, dass die checkboxen wieder leer sind, wenn man refresht hat?
<body>
<script type="text/javascript">
function spoil(me) {
if (me.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') {
me.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';
me.innerText = '';
me.value = 'I didn\'t';
} else {
me.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none';
me.value = 'Did it';
}}
</script>
<body>
<a target="_top" onclick="MM_nbGroup('down','group1','navi','',1)" onmouseover="MM_nbGroup('over','navi','pic/system/navi2.png','',1)" onmouseout="MM_nbGroup('out')"><img src="pic/system/navi2.png" alt="" name="navi" border="0" id="navi" onload="" /></a>
<div id="website">
<p>Rangliste | Profil |</p>
<h1><em><strong>The Bucket List</strong></em></h1>
<div><div class="pre-spoiler"><input name="checkb1" type="checkbox" style="width:50px;font-size:10px;margin:0px;padding:0px;" onClick="spoil(this);" value="Did it">
Miau</div><div><div class="spoiler" style="background-color:#FF6;display: none;">
<?php require_once('isp_image_resize.php'); ?>
</div></div></div>
Liebe(r) 7siech,
wieso postest Du unter dem Thema "PHP", wenn Dein Anliegen nur mit JavaScript zu tun hat?
die sich öffnen, wenn man die checkbox anklickt.
Genau sowas hat mit PHP überhaupt rein garnichts zu tun! Eine Benutzereingabe wird vom Server nicht bemerkt und nicht verarbeitet, solange keine Formulardaten an ihn übersandt wurden, und daher kann dann auch kein PHP-Script tätig werden, das nur auf dem Server laufen kann.
Dynamisches Reagieren auf Benutzereingaben (Mausklicks) hin kann man nur mit JavaScript lösen. Daher bist Du mit PHP falsch. Ich sehe auch keinen PHP-Code in Deinen Beispielen...
Liebe Grüße,
Felix Riesterer.
was muss ich schreiben, um einen 2. spoiler zu machen?
Den Code für den ersten genau kopieren und anpassen.
Das Script geht von einer folgenden Grundstruktur aus (aufs wesentliche gekürzt):
<div>
<div>
<input onclick="spoil(this);">
</div>
<div>
Hier der Spoiler.
</div>
</div>
D.h. es geht zwei Elemente im Baum nach oben und spricht das zweite DIV-Element, das ein Nachfahre ist, an. Und blendet dieses ein bzw. aus.
Weitere Elemente und Attribute kannst du da noch einfügen, allerdings sollte das erste Unter-DIV keine weiteren divs enthalten, sonst klappt die obige Logik nicht.
Mathias
Danke für deine Antwort, molily.
Also wenn ich die ganzen divs kopiere und unten erneut einfüge, geht's nicht.
Was mach ich falsch?
<div>
<div class="pre-spoiler"><input name="checkb1" type="checkbox" style="width:50px;font- size:10px;margin:0px;padding:0px;" onClick="spoil(this);" value="Did it">
Miau
</div>
<div><div class="spoiler" style="background-color: #FF6;display: none;">
<?php require_once('isp_image_resize.php'); ?>
</div></div>
</div>
<div>
<div class="pre-spoiler"><input name="checkb2" type="checkbox" style="width:50px;font- size:10px;margin:0px;padding:0px;" onClick="spoil(this);" value="Did it">
Miau
</div>
<div><div class="spoiler" style="background-color: #FF6;display: none;">
<?php require_once('isp_image_resize.php'); ?>
</div></div>
</div>
Also wenn ich die ganzen divs kopiere und unten erneut einfüge, geht's nicht.
Dann begebe dich auf die Fehlersuche.
Wenn ich deinen Code in ein Dokument einfüge und die JavaScript-Funktion hinzufügen sowie die PHP-Befehl durch irgendeinen statischen Inhalt ersetze, dann funktioniert das hervorragend: Ich klicke auf die Checkbox und das zugehörige Spoiler-Element erscheint bzw. verschwindet.
Vielleicht liegt der Fehler irgendwo im Code, den du uns nicht gezeigt hast. Bitte stelle mal ein vollständiges Testdokument (ohne PHP-Code, der ist für JavaScript irrelevant) zusammen, bei dem sich der Fehler reproduzieren lässt.
Mathias
Ich bin nicht am PC, den ich sonst zum scripten verwende und habe deshalb das includete php script nicht.
es hat mir eine fehlermeldung ausgegeben, was mich nicht gross störte.
scheinbar hat die fehlermeldung verursacht, dass die nächste checkbox nicht funktionierte.
ich habe zum testen den php teil durch statischen text ersetzt und jetzt gehts bei mir auch.
danke!