Ich kämpfe gerade gegen einen IE JavaScript / DOM-Bug (was für ein Spaß) und es hat mich wirklich überrascht. Der fragliche Code kopiert einige Kontrollkästchen in ein Formular und muss den Status der Überprüfung beibehalten. Problem ist, IE (speziell IE8, obwohl ich auch andere rate) will das nicht tun.
Ich habe den Fehler selbst auf einen sehr kleinen Testfall beschränkt. Grundsätzlich funktionieren die Dinge ohne einen DOCTYPE auf der Seite, aber sie sind defekt, wenn ein DOCTYPE vorhanden ist. Ich hätte das Gegenteil erwartet, aber wer weiß mit IE.
Nachfolgend finden Sie die einfachsten möglichen Testfälle. Für jede von ihnen: öffne die Seite in IE, schalte das Kontrollkästchen ein und klicke dann auf "TEST".
Der Fehler tritt auf gültigen Seiten auf (mit <html>
, <head>
, <body>
usw.) und ob die Eingabe innerhalb eines Formulars ist oder nicht. Im "gebrochenen" Fall gibt outerHTML immer wieder an, was beim Laden der Seite vorhanden war (wenn ich die Eingabe standardmäßig aktiviert habe, alarmiert sie immer den Code mit CHECKED, selbst wenn ich sie vorher deaktiviere). Die Dinge passieren auf die gleiche Weise, wenn ich die Eingabe umschließe und innerHTML verwende. Auf der tatsächlichen Website verwende ich jQuery.clone () -Methode, um das Kopieren zu tun; .clone () benutzt intern .outerHTML und so habe ich das eingegrenzt.
Meine Frage ist folgende: Gibt es einen Weg, um manuell neuen HTML-Code manuell zu erstellen? Und hat irgendjemand eine Idee, warum das überhaupt passiert (anders als "IE SUX LOLZ")?
Es gibt Probleme im Allgemeinen mit innerHTML
und Formulareigenschaften. Nicht nur in IE ((es ist schlimmer in FF, wird es nie aktualisieren die checked-Eigenschaft in innerHTML)) ...
Sie können dies versuchen, um das Problem in der verknüpften Frage zu umgehen:
%Vor%Ich schrieb einen Wrapper für .clone () basierend auf gnarfs Antwort :
%Vor%Es ist nicht sehr allgemein (z. B. wird es nicht funktionieren, wenn Sie versuchen, Elemente mit Eingaben zu klonen), aber für diesen Fall scheint es den Trick zu tun.
Verwenden Sie das DOM-äquivalente Objekt eines Kontrollkästchens Ссылка
Fügen Sie es Ihrem DOM-Formular hinzu, verwenden Sie nicht HTML und diesen schmutzigen Weg.
Aus Gründen der Klarheit:
%Vor%Dadurch fügen Sie Ihrem Formular das Kontrollkästchen hinzu und behalten den aktivierten Status (und andere) bei.
Tags und Links javascript internet-explorer jquery dom doctype