IE6-IE9不支持table.innerHTML的解决方法分享
IE6-IE9不支持table.innerHTML的解决方法分享
发布时间:2016-12-30 来源:查字典编辑
摘要:测试代码:复制代码代码如下:varoTable=document.getElementById("test");oTable.innerHT...

测试代码:

复制代码 代码如下:

<table id="test">

</table>

<script>

var oTable=document.getElementById("test");

oTable.innerHTML="<tr><td>innerHTML</td></tr>";

</script>

上述代码在IE6-9中无效,直接报错:

IE9:Invalid target element for this operation.

IE6-8:Unknown runtime error

查找IE的文档(http://msdn.microsoft.com/en-us/library/ms533897(VS.85).aspx)后发现有这么一段:

TheinnerHTMLproperty is read-only on thecol,colGroup,frameSet,html,head,style,table,tBody,tFoot,tHead,title, andtrobjects.

所以只能用其他方案解,我的方案:

复制代码 代码如下:

var oTable=document.getElementById("test");

//oTable.innerHTML="<tr><td>innerHTML</td></tr>";

setTableInnerHTML(oTable,"<tr><td>innerHTML</td></tr>");

function setTableInnerHTML(table, html) {

if(navigator && navigator.userAgent.match(/msie/i)){

var temp = table.ownerDocument.createElement('div');

temp.innerHTML = '<table><tbody>' + html + '</tbody></table>';

if(table.tBodies.length == 0){

var tbody=document.createElement("tbody");

table.appendChild(tbody);

}

table.replaceChild(temp.firstChild.firstChild, table.tBodies[0]);

} else {

table.innerHTML=html;

}

}

这里只是对table做了处理,对其他不支持的元素可以用类似的方案。

另外,IE10中table已经支持innerHTML了。

作者:Artwl

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类