Hallo,
ich verwende eigene Grafiken für die Darstellung von Checkboxen, damit sie zum Design unserer Homepage passen.
Die Formulare erzeuge ich über php und lasse sie ausgeben. Der nachfolgende Code beschränkt sich auf die Ausgabe der Checkboxen:
echo "<div id='eMail_verstecken' class='eMail_verstecken' onclick='Zustand_aendern (\"eMail_verstecken\");'></div>";
echo "<div id='Privater_Eintrag' class='Privater_Eintrag' onclick='Zustand_aendern (\"Privater_Eintrag\");'></div>";
echo "<div id='Nicht_speichern' class='Nicht_speichern_aktiv' onclick='Zustand_aendern (\"Nicht_speichern\");'></div>";
Kurz vor dem schliessenden body-Tag initialisiere ich die Elemente:
<script type="text/javascript">
var Elemente = new Array ("Eingabefeld_Name",
"Eingabefeld_eMail",
"Eingabefeld_Homepage",
"Eingabefeld_Text",
"eMail_verstecken",
"Privater_Eintrag",
"Nicht_speichern");
for (var i = 0; i < Elemente.length; ++i)
{
var Objekt = document.getElementById (Elemente [i]);
alert (Objekt);
if (Objekt)
{
var Objekt_ID = Objekt.id;
if (Objekt_ID.indexOf ("Eingabefeld_") !== -1)
{
var Vorbelegung = Objekt_ID.substr (12);
applyDefaultValue (Objekt, Vorbelegung);
}
}
}
</script>
~~~~~~html
</body>
Die Funktion applyDefaultValue ()
hat für mein Anliegen keine Bedeutung (sie dient der Vorbelegung der input-Felder mit Ausgangswerten), ich habe die Anweisungen aber der Vollständigkeit hier mit aufgeführt.
Beim Anklicken einer checkbox-Grafik wird die Funktion Zustand_aendern ()
aufgerufen, die die ID des zu ändernden Elements übergibt.
Hier die Funktion Zustand_aendern ()
:
function Zustand_aendern (Element)
{
var Vorherige_Klasse = Element.className;
Element.className = (Element.className == Element) ? Element + "_aktiv" : Element;
alert ("Element: " + Element + "\nVorherige Klasse: " + Vorherige_Klasse + "\nNeue Klasse: " + Element.className);
}
Nun kommen wir zum eigentlichen Problem:
Weder der jeweilige Klassenname wird korrekt ermittelt, noch der Klassenname korrekt gewechselt.
Der zu Testzwecken eingebaute alert-Befehl gibt mir folgende Informationen (hier für die Checkbox "Nicht_speichern") aus:
Element: Nicht_speichern
Vorherige Klasse: undefined
Neue Klasse: undefined
Der alert-Befehl im script-Block gibt mir für alle Elemente "[object HTMLInputElement]" aus. Ob dies auf eine korrekte Referenzierung schliessen lässt, weiß ich nicht.
Wenn ja, dann kann/sollte der Fehler hier nicht liegen, zudem ist das Formular zu diesem Zeitpunkt vollständig aufgebaut, d.h. die Elemente existieren auch bereits zu diesem Zeitpunkt.
Wo liegt mein Fehler?
Vielen Dank und Gruß,
Enrico