Donnerstag, 17. Juli 2008

Bug im IE bei der Interpretation der innerHTML-Eigenschaft

Ich habe gestern ein Formular programmiert, welches sich basierend auf den Eingaben dynamisch aufbaut. Dafür habe ich in einem JavaScript die Formularfelder (Select-Boxen) über die innerHTML-Eigenschaft gefüllt. Das funktionierte auch wunderbar im Firefox, wo ich das programmiert hatte. Ich dachte, ich wäre fertig, und habe das dann noch einmal im Internet-Explorer getestet. Dort da der Schock: da läuft das nicht.

Offensichtlich handelt es sich dabei um einen Bug des Internet Explorers bei der Verarbeitung von <select> und <option>. Der Bug ist aber eigentlich ein uralter Hut, wie ein Blick in einen entsprechenden Support-Artikel auf microsoft.com beweist. Umso interessanter, dass ich den immer noch habe.

Die Lösung ist aber einfach. Statt das innerHTML auf das Select-Feld anzuwenden, muss man noch einen Div-Container darumlegen und das Select-Element jeweils komplett da reinschreiben:

Code:

var newcode = '<select name="test">
<option value="1">1</option>
<option value="2">2</option>
</select>';
document.getElementById("divcontainer").innerHTML = newcode;

Keine Kommentare: