代码之家  ›  专栏  ›  技术社区  ›  Treby

javascript:ie:outerhtml

  •  1
  • Treby  · 技术社区  · 15 年前

    使用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 回复  |  直到 15 年前
        1
  •  1
  •   jerjer    15 年前

    出于某些原因,我不知道,在大多数情况下,不允许修改outerhtml。 我猜,这是因为当您修改一个元素的outerhtml时,实际上是在替换当前元素。

    在我看来,替换一个元素比修改它的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>
    
        2
  •  0
  •   Roland Bouman    15 年前

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

    1. 创建新的 p 要素
    2. 追加 元素到 sub (我认为这也是一个元素本身)
    3. 设置 outerHTML 元素转换为某些文本。

    你也可以这样做:

    1. 使用所需的文本数据创建新的textnode
    2. 追加到 附属的 子节点:

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

    或者,如果 附属的 不管怎样都是空的,只需执行以下操作:

    sub.innerHTML = "Update Complete!";
    
    推荐文章