JAVASCRIPT:IE:outerHTML

时间:2010-01-11 08:05:59

标签: javascript html internet-explorer outerhtml

使用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;”

任何人都可以帮我解决这个问题..提前致谢

2 个答案:

答案 0 :(得分:1)

由于某些原因我不知道,在大多数情况下,不允许修改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>

答案 1 :(得分:0)

你的代码试图实现什么?在这两种情况下,您都可以:

  1. 创建新的p元素
  2. p元素附加到sub(我假设它本身也是一个元素)
  3. outerHTML元素的p设置为某个文字。
  4. 你也可以这样做:

    1. 使用所需的文本数据创建新的textNode
    2. 将其附加到sub的子节点:

      sub.appendChild(document.createTextNode("Update Complete!"));

    3. 或者,如果sub无论如何都是空的,只需执行以下操作:

      sub.innerHTML = "Update Complete!";