搜索

查看: 3121|回复: 11

[CSS/HTML] IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解决方案

[复制链接]
发表于 2023-5-4 16:52:01 | 显示全部楼层 |阅读模式
Editor 2023-5-4 16:52:01 3121 11 看全部
IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值,重现代码如下
[U]复制代码[/U] 代码如下:

   
        
        IE6-IE9中tbody的innerHTML不能复制bug
   
   
        
aaa

        
            GETSET
        
        
   


两个按钮,第一个获取tbody的innerHTML,第二个设置tbody的innerHTML。
获取时所有浏览器都弹出了tr的字符串,但设置时IE6-9不支持,而且报错,如图

20146485153257.png

20146485153257.png


可以利用特性判断来看浏览器是否支持tbody的innerHTML设值
[U]复制代码[/U] 代码如下:
var isupportTbodyInnerHTML = function () {
    var table = document.createElement('table')
    var tbody = document.createElement('tbody')
    table.appendChild(tbody)
    var boo = true
    try{
        tbody.innerHTML = '[tr][/tr]'
    } catch(e) {
        boo = false
    }
    return boo
}()
alert(isupportTbodyInnerHTML)

对于IE6-IE9里如果要设置tbody的innerHTML,可以使用如下替代方法
[U]复制代码[/U] 代码如下:
function setTBodyInnerHTML(tbody, html) {
    var div = document.createElement('div')
    div.innerHTML = '
' + html + '
'
    while(tbody.firstChild) {
        tbody.removeChild(tbody.firstChild)
    }
    tbody.appendChild(div.firstChild.firstChild)
}

用一个div来包含一个table,然后删除tbody里的所有元素,最后给tbody添加div的第一个元素的第一个元素,即div>table>tr。
当然还有一个更精简的版本,它直接采用replaceChild方法替换
[U]复制代码[/U] 代码如下:
function setTBodyInnerHTML(tbody, html) {
    var div = document.createElement('div')
    div.innerHTML = '
' + html + '
'
    tbody.parentNode.replaceChild(div.firstChild.firstChild, tbody)
}

从MSDN上记录上看 col、colGroup、frameset、html、head、style、table、tfoot、tHead、title和tr的innerHTML都是只读的(IE6-IE9)。
The innerHTML property is read-only on the col, colGroup, frameSet, html, head, style, table, tBody, tFoot, tHead, title, and tr objects.
You can change the value of the title element using the document.title property.
To change the contents of the table, tFoot, tHead, and tr elements, use the table object model described in Building Tables Dynamically. However, to change the content of a particular cell, you can use innerHTML.
回复

使用道具 举报

发表于 2023-6-29 09:38:53 | 显示全部楼层
123456833 2023-6-29 09:38:53 看全部
这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-29 19:04:34 | 显示全部楼层
dxf17 2023-6-29 19:04:34 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
回复

使用道具 举报

发表于 2023-6-29 22:06:47 | 显示全部楼层
风吹吹蛋蛋疼风w 2023-6-29 22:06:47 看全部
楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
回复

使用道具 举报

发表于 2023-6-29 22:55:25 | 显示全部楼层
尘埃416 2023-6-29 22:55:25 看全部
这东西我收了!谢谢楼主!知鸟论坛真好!
回复

使用道具 举报

发表于 2023-6-30 00:00:25 | 显示全部楼层
落败的青春阳落s 2023-6-30 00:00:25 看全部
楼主,大恩不言谢了!知鸟论坛是最棒的!
回复

使用道具 举报

发表于 2023-6-30 21:40:14 | 显示全部楼层
无人岛屿颈 2023-6-30 21:40:14 看全部
我看不错噢 谢谢楼主!知鸟论坛越来越好!
回复

使用道具 举报

发表于 2023-7-5 05:00:06 | 显示全部楼层
Gordon520 2023-7-5 05:00:06 看全部
论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
回复

使用道具 举报

发表于 2023-7-6 08:18:47 | 显示全部楼层
向往草原403 2023-7-6 08:18:47 看全部
这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-7-6 09:04:33 | 显示全部楼层
ffycxyw2274436 2023-7-6 09:04:33 看全部
感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
回复

使用道具 举报

  • 您可能感兴趣
点击右侧快捷回复 【请勿灌水】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

RSS订阅| SiteMap| 小黑屋| 知鸟论坛
联系邮箱E-mail:zniao@foxmail.com
快速回复 返回顶部 返回列表