innerHTML mit Internet Explorer

tomhuber

Grünschnabel
Hallo, ich habe folgendes Problem:
Es handelt sich um eine MyFaces Komponente die mittels AJAX ein Tabellen- update vornimmt, d.h. es wird nicht der ganze View neu gesendet, sondern nur die TableRows.
Es funktioniert wunderbar mit Firefox und Opera aber der IE kann folgende Zeile nicht ausführen: unbekannter Laufzeitfehler

receiver.innerHTML = response;

receiver ist ein HTMLTableSectionElement
response sind die tableRows

Ich verwende die prototype.js von http://prototype.conio.net/

vielen Dank für eure Hilfe
 
Mit Tabellen kommt es öfter mal im IE zu Problem mit innerHTML. Du könntest entweder versuchen DOM-Konform die data-Eigenschaft ändern (das geht aber nur response selber keine HTML-Tags enthält) oder du versuchst es mal, indem du ein <div>-Tag in die Tabellenzelle packst und dann das Anstelle der Zelle als reciever nimmst.
 
Im IE kannst du per innerHTML keine Tabellenelemente erzeugen(tr,th,td usw.)
Wenn du neue tr(zzgl. td) in einer Tabelle erzeugen willst, musst du entweder per createElement()/appendChild() neue tr-Knoten erzeugen, in welche du wiederum neue td einhängst, und das ganze in die Tabelle einhängen(du kannst da auch per insertRow()/insertCell() arbeiten, das ist anwärtskompatibel zu IE4, die erstere Methode funktioniert erst ab IE 5.5)


Eine andere Alternative wäre, die Tabelle in ein div o.ä. zu packen.
Dann das innerHTML der Tabelle in eine String-Variable einlesen, und diesen String um den gewünschten Code erweitern.
Danach kannst du dann der innerHTML-Eigenschaft des Eltern-Divs der Tabelle diesen String zuweisen.... das erzeugen kompletter Tabellen per innerHTML geht im IE nämlich.

Ich schätze, so wie du es beschrieben hast, dürfte die letzte Variante dort am Einfachsten einzubringen sein.
 

Neue Beiträge

Zurück