为什么IE会在这一行上抛出错误?

时间:2014-05-07 23:42:34

标签: javascript internet-explorer html-table innerhtml

以下代码在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 个答案:

答案 0 :(得分:3)

'tr'元素上的'innerHTML'在IE中是readOnly

  

除以下内容外,所有对象的属性都是可读/写的   它是只读的: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等来获得预期的结果。

希望这有帮助!