formularelemente mit js dynamisch erstellen
Michael Gusek
- javascript
Hallo !
Ich bin dabei, eine Funktion zu schreiben, die mir Formularelemente
wie Eingabefelder, Auswahllisten und Radiobuttons in einer Tabelle dynamisch erstellt.
Eingabefelder und Auswahlliste funktioniert schon, allerdings hab
ich mit Radiobuttons meine Probleme. Hier meine Funktion:
function appendRow(id, text, elem)
{
// elem ist ein eigenes Objekt, welches alle Eigenschaften
// eines Formularelementes enthält, z.b. typ, name, value ...
( ... )
var form;
// erzeugt ein neues Formularelement
// elem.tag = input oder select ...
form = document.createElement(elem.tag);
(...)
// Radiobuttons erzeugen ?
if(elem.typ == "radio")
{
// Typ setzen
form.setAttribute("type", elem.typ);
// Name setzen
form.setAttribute("name", elem.name);
'???'
}
(...)
}
Mein Problem ist, das ich nicht weiss, wie es bei den '???' weitergeht. Es sollen zwei Radiobuttons für männlich/weiblich
erstellt werden.
Radiobuttons werden wohl intern als Array dargestellt, wenn ich jetzt form[0].value = "männlich"; und
form[1].value = "weiblich"
mache, wird gar nichts erst angezeigt, das ist es also nicht.
wenn ich form.value "männlich"; mache, krieg ich immerhin einen
Radiobutton zu sehen, wüsste jetzt aber nicht, wie ich den "weiblichen" hinbekomme.
Jemand eine Idee ??
Einfacher geht das dynamische Erstellen mit dem innerHTML Attribut. Wenn Du z.B. schon die Form hast, kannst du schreiben:
text = "";
for (i=1 ; i< 10 ; i++)
text = text + "<input name='checkbox[" + i + "]' type='checkbox'>";
text = text + "<input type='submit' value='abschicken'>";
oForm.innerHTML = text;
und fertig ist dein Fomular. Das geht erheblich einfacher, als das alles mit setAttribute und so 'nem Zeug zu machen zu machen.
MfG
GK
Einfacher geht das dynamische Erstellen mit dem innerHTML Attribut. Wenn Du z.B. schon die Form hast, kannst du schreiben:
MfG
GK
Ja das stimmt, mit innerHTML isses einfacher. Ich hatte das schon mal probiert, funtzte aber nur ordentlich im explorer. *seufz*
Und da ich mit dem 'zeug' bisher ganz gute Resultate bekommen habe, wollt ich auch gern dabei bleiben.
Micha