JavaScript:IE:外部HTML
-
19-09-2019 - |
题
我使用 IE 浏览器遇到outerHTML 的问题
如果我说:
txt="Update Complete!";
msg = sub.appendChild(d.createElement("p"));
msg.outerHTML = txt;
它工作正常:
但如果我说
txt="1 Error:<ul><li>Some Error</li></ul>";
msg = sub.appendChild(d.createElement("p"));
msg.outerHTML = txt;
给我一个错误:
Message: Unknown runtime error
Line: 389
Char: 4
Code: 0
URI: http://10.1.1.16/schedule_calendar/js/validate.js
第 389 行属于“msg.outerHTML = txt;”
谁能帮我解决这个问题..提前致谢
解决方案
对于一些原因,我不知道,在大多数情况下,修改outerHTML是不允许的。 我猜测,这是因为当你正在修改元素的outerHTML你实际上是取代目前的元素。
IMO,可以更安全地更换比修改其outerHTML一个元件。
在你的情况,这也许就足够了:
<强>更新的位置:强>
<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>
其他提示
您的代码想要实现什么目的?在这两种情况下你都会:
- 创建一个新的
p
元素 - 追加
p
元素到sub
(我认为它本身也是一个元素) - 设置
outerHTML
的p
元素到某些文本。
你也可以这样做:
- 使用所需的文本数据创建一个新的 textNode
将其附加到
sub
的子节点:sub.appendChild(document.createTextNode("Update Complete!"));
或者如果 sub
无论如何都是空的,只需执行以下操作:
sub.innerHTML = "Update Complete!";
不隶属于 StackOverflow