Fieldset - Inhalt ein-/ausblenden
Katlana
- javascript
Hallo miteinander.
Ich habe folgendes Problem.
Ich möchte gerne mit Hilfe eines Scripts den Inhalt eines Fieldsets ein- und ausblenden lassen.
Kann mir jemand weiterhelfen und sagen, wo der Fehler ist, bzw. wie ich diesen beheben kann?
Viele Grüße
Katlana
<form name="Beschreibung">
<input type="checkbox" id="chkBeschreibung" name="chkBeschreibung" style="display:none"
/>
</td>
<td>
<fieldset name="fldDetailsBeschreibung" style="width:300px">
<legend onclick="ZeigeDetailsBeschreibung();">Beschreibung</legend>
<div style="display:none">
<br>
Hier steht die detailierte Beschreibung.
<br><br>
</div>
</fieldset>
</form>
</td>
<script type="text/javascript">
function ZeigeDetailsBeschreibung()
{
set(document.forms["Beschreibung"].elements["chkBeschreibung"]= 'true';
if (document.forms["Beschreibung"].elements["chkBeschreibung"].checked){
document.forms["Beschreibung"].elements["fldDetailsBeschreibung"].div.style.display =
'block';
}else{
document.forms["Beschreibung"].elements["fldDetailsBeschreibung"].div.style.display =
'none';
}
}
</script>
div ist kein Formularelement und kann daher nicht mit document.forms["Beschreibung"].elements["fldDetailsBeschreibung"].div erfasst werden.
Gebe dem betreffenden div eine ID und verwende document.getElementById, damit ist Dein Problem gelöst.
Gruß, LX
Mahlzeit Katlana,
Kann mir jemand weiterhelfen und sagen, wo der Fehler ist, bzw. wie ich diesen beheben kann?
Ja.
<fieldset name="fldDetailsBeschreibung" style="width:300px">
<legend onclick="ZeigeDetailsBeschreibung();">Beschreibung</legend>
Generell würde ich Dir empfehlen, bei derartig "allgemeinen" Funktionen eine Referenz auf das aktuelle Element als Parameter mitzugeben. Warum? Siehe weiter unten ...
function ZeigeDetailsBeschreibung()
{set(document.forms["Beschreibung"].elements["chkBeschreibung"]= 'true';
Hättest Du der Funktion eine Referenz auf das http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#legend@title=legend-Element als Parameter mitgegeben (s.o.), könntest Du einfach über dessen http://de.selfhtml.org/javascript/objekte/elements.htm#form@title=form-Eigenschaft auf das umgebende Formular zugreifen und spartest Dir den ersten Teil der obigen Code-Zeile.
Der Rest ist allerdings auch nicht viel richtiger - Du willst wirklich einem Elementobjekt den String 'true' zuweisen? Möchtest Du nicht viel lieber seine http://de.selfhtml.org/javascript/objekte/elements.htm#checked@title=checked-Eigenschaft auf true setzen?
if (document.forms["Beschreibung"].elements["chkBeschreibung"].checked){
Ah, Du kannst das ja doch. Aber wenn Du oben das Element explizit auf "angekreuzt" setzt, musst Du das hier doch nicht mehr abfragen???
document.forms["Beschreibung"].elements["fldDetailsBeschreibung"].div.style.display =
'block';
Wie LX bereits schrieb, geht das so nicht. Ein Formularelement hat keine Eigenschaft namens "div". Du kannst allerdings unterhalb des entsprechenden Formularelements <http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=nach einem <div>-Element suchen> oder Dir <http://de.selfhtml.org/javascript/objekte/node.htm#child_nodes@title=alle seine Kindobjekte> ausgeben lassen.
MfG,
EKKi
Ergänzend zu den bisherigen Antworten
set(document.forms["Beschreibung"].elements["chkBeschreibung"]= 'true';
Was ist set?
Und falls es das wirklich gibt und es hier auch Sinn macht, dann hast du hier eine Klammer aufgemacht, die du nicht mehr schließt.