Javascript: IE: Outerhtml
-
19-09-2019 - |
Frage
Problem begegne ich mit Outerhtml mit IE-Browser
Wenn ich sage:
txt="Update Complete!";
msg = sub.appendChild(d.createElement("p"));
msg.outerHTML = txt;
Es funktioniert:
Wenn ich aber sage
txt="1 Error:<ul><li>Some Error</li></ul>";
msg = sub.appendChild(d.createElement("p"));
msg.outerHTML = txt;
Gibt mir einen Fehler von:
Message: Unknown runtime error
Line: 389
Char: 4
Code: 0
URI: http://10.1.1.16/schedule_calendar/js/validate.js
Line: 389 bezieht sich auf "msg.outerHTML = txt;"
Kann mir jemand helfen mit diesem .. Vielen Dank im Voraus
Lösung
Für einige Gründe, die ich nicht kenne, in den meisten Fällen zu modifizieren Outerhtml ist nicht erlaubt. Ich vermute, dass dies liegt daran, dass, wenn Sie die Outerhtml eines Elements modifizieren Sie das aktuelle Element tatsächlich ersetzt werden.
IMO, es sicherer, ein Element zu ersetzen, als angepaßter Outerhtml.
In Ihrem Fall, vielleicht wird dies genügen:
hier Neuigkeiten:
<html>
<head><title>Test</title></head>
<body>
<div>
some content...
<div id="sub"></div>
</div>
<script type="text/javascript">
window.onload = function(){
var sub = document.getElementById('sub');
var txt="<p>Update Complete!</p>";
sub.innerHTML = txt;
alert('test 1');
txt="1 Error:<ul><li>Some Error</li></ul>";
sub.innerHTML = txt;
}
</script>
</body>
</html>
Andere Tipps
Was versucht, Ihren Code zu erreichen? In beiden Fällen müssen Sie tun:
- Erstellen Sie ein neues
p
Element - append das
p
Elementsub
(was ich davon ausgehen, ist ein Element selbst auch) - stellen Sie die
outerHTML
desp
Element zu einem Text.
Sie könnten genauso gut gemacht haben:
- Erstellen Sie eine neue textNode mit dem gewünschten Textdaten
-
append dass
sub
des childnodes:sub.appendChild(document.createTextNode("Update Complete!"));
Oder, wenn sub
ist leer sowieso, einfach tun:
sub.innerHTML = "Update Complete!";