Kein Zugrif auf eingefügtes Formularfeld im Firefox
Ralf
- javascript
Hallo,
folgende Konstruktion habe ich (stark vereinfacht):
<form name=form1 action="">
<table>
<tr>
<td>
<input type=checkbox name=x1>
</td>
</tr>
</table>
</form>
Nun füge ich per Javascript eine Zeile mit einer Zelle am Anfang der Tabelle ein und belege die Zelle (TD) mit einer weiteren Checkbox:
TD.innerHTML="<input type=checkbox name=neu>"
Das funktioniert und die Checkbox wird auch angezeigt.
Mein Problem ist, dass ich beim Zugriff über das forms Objekt mit dem Firefox nicht auf die eingefügte Checkbox zugreifen kann.
Bei folgender Zuweisung
angekreuzt = document.form1.neu.checked
bekommt der Firefox einen Fehler: document.form1.neu has no properties
Und in der Tat existiert dieses Objekt auch nicht. Im IE habe ich damit kein Problem.
Natürlich könnte ich auf die Checkbox in diesem Fall auch anders zugreifen, aber für die reale Anwendung ist es sehr wichtig, dass die Checkbox ein Element des Formulars ist.
Muss ich für den Firefox nun das neue Element extra dem forms Objekt hinzufügen?
Also etwa so (habs nicht ausprobiert):
cbox = document.createElement("input");
document.form1.appendChild(cbox);
Bisher habe ich es in der Anwendung geschafft, ohne Browser-Abfragen zu programmieren.
Ralf
Hallo,
TD.innerHTML="<input type=checkbox name=neu>"
Das funktioniert und die Checkbox wird auch angezeigt.
...
Und in der Tat existiert dieses Objekt auch nicht. Im IE habe ich damit kein Problem.
Ein nicht existentes Objekt wird angezeigt?
Könnte es sein, dass du Properties, die du später abfragen möchtest, auch angeben musst? Also etwa so:
TD.innerHTML="<input type=checkbox name=neu checked=checked>"
angekreuzt = document.form1.neu.checked
bekommt der Firefox einen Fehler: document.form1.neu has no properties
Vielleicht müsste die Fehlermeldung heißen: document.form1.neu has not the property "checked"
Kalle
Ein nicht existentes Objekt wird angezeigt?
Es existiert als document.getElementsyName("neu")[0]. Aber nicht als document.form1.neu im Firefox - im IE schon.
Könnte es sein, dass du Properties, die du später abfragen möchtest, auch angeben musst? Also etwa so:
TD.innerHTML="<input type=checkbox name=neu checked=checked>"
Das ist nicht der Punkt. Das Objekt existiert als Child des TD Objektes - aber eben nicht als Child des forms Objektes.
Vielleicht müsste die Fehlermeldung heißen: document.form1.neu has not the property "checked"
Nein - die Fehlermeldung ist schon richtig. Eben weil das Objekt nicht existiert. Die Frage ist aber, warum das im Firefox der Fall ist.
Meiner Meinung nach handelt es sich um einen Fehler im DOM-Modell des Firefox. Mir war schon vorher aufgefallen, dass in einem FORM-Tag eingeschlossene Objekte im Firefox in gleicher Hierarchiestufe angelegt sind, während es im IE Child-Objekte sind.
Ralf