为啥 IE 会在这一行抛出错误?

Posted

技术标签:

【中文标题】为啥 IE 会在这一行抛出错误?【英文标题】: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>

【问题讨论】:

【参考方案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,但是……这不值得。仍然需要大量重绘等。

以上是关于为啥 IE 会在这一行抛出错误?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中..为啥IE执行addEventListener()会出错??

为啥 requests-mock 装饰器模式会在 pytest 中抛出“fixture 'm' not found”错误?

为啥 nodemon 在终端中抛出一些错误?

为啥 PasteSpecial 方法有时会抛出错误 1004?

为啥 Java 会在这里抛出 NullPointerException?

IE9 在 iframe 中加载脚本时抛出异常。为啥?