ChrisB: Probleme mit dem dynamischen Hinzufügen eines hidden-Fields

Beitrag lesen

Hi,

Ich habe eine Seite auf der ein Button angeklickt wird. Dieser führt Javascript aus, welches dynamisch HTML-Code auf der Seite erzeugt. Soweit funktioniert das auch alles wunderbar, nur leider kriege ich mein Input-Feld nicht 'hidden'.

var inputtag = document.createElement('input');
    formtag.appendChild(inputtag);

Die type-Eigenschaft eines input-Feldes zu ändern, nachdem es bereits ins Dokument eingehängt wurde, kann auch in anderen Browsern als dem IE problematisch sein - weil type eigentlich als read-only definiert ist.

var ieidie = document.createAttribute('id');
    ieidie.nodeValue = 'printhtml';
    inputtag.setAttributeNode(ieidie);

Dieser ganze Krempel ist unnötig, und im IE oftmals noch mal besonders problematisch.
elementReferenz.eigenschaftsname = wert;
tut's in fast allen Situationen auch - hier also bspw.
inputtag.id = "printhtml";

... formtag ist ein dynamisch eingefügtes <form>-Tag. Alle drei Varianten, die ich mir in Foren/News/Blogs usw. zusammengesucht habe, funktionieren leider garnicht und geben mir immer nur Javascriptfehler im IE6 (auf den habe ich leider keinen Einfluss).

Formularfelder dynamisch zu erzeugen ist im IE oftmals problematisch, zumindest wenn man den nach DOM "korrekten" Weg geht.

Die MSDN schlägt in der Beschreibung zu createElement eine Alternativ-Syntax vor, die im IE immer funktionieren sollte:

var newRadioButton = document.createElement("<INPUT TYPE='RADIO' NAME='RADIOTEST' VALUE='First Choice'>")

Also statt des Elementnamens gleich dessen komplettes HTML inkl. Attribute als Parameter übergeben.
Wenn du ausschliesslich für den IE 6 schreibst, kannst du es dabei belassen - sonst muss eine Browserweiche her, da andere Browser diesen Quatsch natürlich nicht akzeptieren.

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.