3 Stimmen

Warum funktioniert .html und nicht innerHTML oder appendChild

Ich versuche, eine Ajax-Antwort zu einem Div hinzuzufügen (es ist HTML-Code mit Tabellen, Formularen usw.).

In FF innerHTML funktioniert einwandfrei, aber im IE erhalte ich einen unbekannten Fehler.

Ich habe viele Dinge ausprobiert, aber es hat nur funktioniert, als ich jQuery hinzugefügt und die .html Methode auf das Div, in das ich den Code einfügen möchte.

Kann mir jemand erklären, warum dies funktioniert und nicht eine einfache innerHTML ? Ich habe versucht, die .html() Code, aber ich schätze, ich bin nicht so gut in JS, weil ich nicht verstanden habe, was es tat.

9voto

scunliffe Punkte 60080

IE hat mehrere dokumentiert ( vor | Tabelle (thead, tbody, tr, tfoot) | div | Wählen Sie ) .innerHTML-Fehler .

So können Bibliotheken wie jQuery abstrahiert diese Bugs für Sie, indem sie Workarounds für den IE anwendet, wo es nötig ist.

Was Ihren speziellen Fehler betrifft... ohne den Code zu sehen, ist es schwer zu sagen.

Einstellung der .innerHTML auf Pre's, bestimmte div's, select's (wenn es fehlschlägt, wird es stillschweigend fehlschlagen), aber das Setzen der .innerHTML bei bestimmten Tabellenelementen (in bestimmten Versionen des IE) führt tatsächlich zu einem Fehler/einer Ausnahme.

Hinweis : Das Problem mit der Einstellung der .innerHTML eines div ist sehr spezifisch und tritt nur im IE6 und IE7 auf.

0voto

Jonathon Faust Punkte 12196

IE ist pingelig beim Ändern <table>s von javascript. Ich habe schon einmal Probleme bekommen, wenn ich die Tabelle nicht bis ins letzte Detail spezifiziert habe, einschließlich der <tbody> Tag.

-1voto

Nick Craig-Wood Punkte 50398

Verwenden Sie einfach jQuery und vergessen Sie all die schrecklichen browserübergreifenden Probleme - Sie werden nicht zurückgehen!

-2voto

Siblja Punkte 851

Ich habe jeden Tag das gleiche Problem. Versuchen Sie es mit .innerText anstelle von .innerHTML, das wird Ihr Problem lösen. Die Antwort ist, dass Javascript in IE und FF unterschiedlich geparst wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X