码迷,mamicode.com
首页 > Web开发 > 详细

innerHTML在早期IE版本不支持的問題

时间:2015-04-27 15:12:16      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

前两天在在页面时需要动态创建table,由于需要动态生成行,于是偷懒使用了innerHTML属性

自己习惯使用FF,无意中使用IE打开竟发现报错了。

debug了一下发现是innerHTML搞得鬼。

在MSDN下找到了下面的描述:

https://msdn.microsoft.com/en-us/library/ms533897%28v=vs.85%29.aspx

The innerHTML property is read-only on the col, colGroup, frameSet, html, head, style, table, tBody, tFoot, tHead, title, and tr objects.

 

即在上述元素中,innerHTML属性是为只读的,我们不能直接使用innerHTML来改变它们的行为。

解决方法:

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;
        }
}

庆幸的是,此问题在IE10以上版本已经得到修复

 

innerHTML在早期IE版本不支持的問題

标签:

原文地址:http://www.cnblogs.com/deryck/p/4460091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!