Deus Figendi: Internet Explorer macht innerHTML kaputt

Beitrag lesen

Du hast jetzt zwar zum wiederholten Mal beschrieben, was du machst - aber immer noch nicht warum, zu welchem Zweck. Sinnvolle Alternativen kann man aber nur vorschlagen, wenn man diesen kennt.

Ich kann ChrisB hier nur beipflichten, es ist noch gänzlich unklar, was dein Ziel ist.

Beispielsweise könnte man aus deinem Text herauslesen, dass du letztlich zwei Varianten des gleichen Elements haben willst und zwischen diesen hin und her wechseln möchtest.
Ich bin nicht sicher ob der zweite Zustand beim generieren der Seite mit PHP bereits bekannt ist. Falls ja scheint es mir irgendwie einfacher, wenn du beide Elemente einfach so reinschreibst nur mit unterschiedlichen Klassen, von denen eine ausgeblendet wird (display:hidden;). Anschließend schaltest du die Klassen mit JS einfach um.

Oder aber wie oben vorgeschlagen du verwendest normale DOM-Operationen und änderst genau die Punkte, die du geändert haben willst anstatt HTML zu generieren.
Denn wenn du HTML generierst ist der Browser gezwungen es neu zu parsen, während er wenn du DOM-Operationen verwendest das Parsing quasi wegfällt und nur noch das Rendern bleibt.
Der Unterschied ist eben ob du dem Kollegen (Browser) einen Hammer (DOM-Objekt) gibst oder ob du ihm die Bauanleitung (HTML) für einen Hammer gibst, weil Stiel und Eisen schon hat. Ersteres ist irgendwie effizienter.
Den Nagel reinhauen (rendern) muss der Kollege in jedem Fall.

Im Übrigen habe ich noch nie innerHTML benutzt oder benutzen müssen, wenn ich den Inhalt eines Textknoten haben will verwende ich .data und wenn ich Elementknoten verändern will verwende ich DOM-Operationen (.childNodes, getElement(s)By*, first/last/next[selten] ...).

.innerHtml zu verwenden käme mir vielleicht in den Sinn, wenn ich fertiges unbekanntes HTML irgendwo rumliegen habe und einfach ins Dokument schmeißen will wie es ist. Wenn ich dann nämlich DOM-Operationen verwenden wollte müsste ich das Zeug erst zu XML (oder eine andere Objekt-Struktur) parsen und dann wieder reinpflegen. Eine solche Aufgabe ist mir aber noch nicht unter gekommen.

--
sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(