【问题标题】:Why does IE throw an error on this line?为什么 IE 会在这一行抛出错误?
【发布时间】:2014-06-25 04:04:10
【问题描述】:

以下代码在 Firefox 中运行良好,但 IE 报错:

第 41 行,字符:3 出现异常运行时错误。

为什么 IE 不能处理这段代码?我需要做什么来修复它?

 <script>
 function addComparison()
 {
    var tableTR = document.getElementById('comparisons');
    if(tableTR!=null)
    {
        var td2Add = "<td id='comp_2' valign='top' align='left' style='border-right: 1px solid black'>ADDED</td>";
        alert(td2Add);
        tableTR.innerHTML += td2Add; //LINE 41, the line IE8 errors on!
    }
 }
 </script>

点击此链接调用该函数:

 <a href='javascript:addComparison();'>Add Comparison</a>

它试图更新的元素:

 <table>
   <tr id='comparisons' valign='top' align='left'></tr>
 </table>

【问题讨论】:

    标签: javascript internet-explorer html-table innerhtml


    【解决方案1】:

    'tr' 元素上的'innerHTML' 在 IE 中是只读的

    该属性对于除以下对象之外的所有对象都是读/写的,例如 它是只读的:COL、COLGROUP、FRAMESET、HEAD、HTML、STYLE、 表、TBODY、TFOOT、THEAD、TITLE、TR。

    来源:http://msdn.microsoft.com/en-us/library/ms533897(VS.85).aspx

    但是,您可以使用 innerHTML 创建一个全新的表格(可能不是您想要做的)或使用 document.createElementappendChild/replaceChild 等来获得您想要的结果。

    希望这会有所帮助!

    【讨论】:

    • 我想我必须使用 document.createElement
    • 不管怎样,这一直是 IE 中的一个问题。你可以玩弄documentFragment,但是……这不值得。仍然需要大量重绘等。
    猜你喜欢
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    相关资源
    最近更新 更多