您现在的位置是:网站首页> 编程资料编程资料
IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解决方案_经验交流_
2023-05-25
294人已围观
简介 IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解决方案_经验交流_
IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值,重现代码如下
| aaa |
两个按钮,第一个获取tbody的innerHTML,第二个设置tbody的innerHTML。
获取时所有浏览器都弹出了tr的字符串,但设置时IE6-9不支持,而且报错,如图

可以利用特性判断来看浏览器是否支持tbody的innerHTML设值
var isupportTbodyInnerHTML = function () {
var table = document.createElement('table')
var tbody = document.createElement('tbody')
table.appendChild(tbody)
var boo = true
try{
tbody.innerHTML = '
} catch(e) {
boo = false
}
return boo
}()
alert(isupportTbodyInnerHTML)
对于IE6-IE9里如果要设置tbody的innerHTML,可以使用如下替代方法
function setTBodyInnerHTML(tbody, html) {
var div = document.createElement('div')
div.innerHTML = '
while(tbody.firstChild) {
tbody.removeChild(tbody.firstChild)
}
tbody.appendChild(div.firstChild.firstChild)
}
用一个div来包含一个table,然后删除tbody里的所有元素,最后给tbody添加div的第一个元素的第一个元素,即div>table>tr。
当然还有一个更精简的版本,它直接采用replaceChild方法替换
function setTBodyInnerHTML(tbody, html) {
var div = document.createElement('div')
div.innerHTML = '
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.
相关内容
- 详细分析css float 属性以及position:absolute 的区别_基础教程_
- CSS可以做的几个令你叹为观止的实例分享_经验交流_
- 页面遮罩层,并且阻止页面body滚动。bootstrap模态框原理_CSS/HTML_
- 用css截取字符的几种方法详解(css排版隐藏溢出文本)_CSS/HTML_
- CSS3实例分享之多重背景的实现(Multiple backgrounds)_CSS/HTML_
- CSS3+Js实现响应式导航条_CSS/HTML_
- HTML <!DOCTYPE> 标签_CSS/HTML_
- 从零学CSS系列之文本属性_基础教程_
- 告别AJAX实现无刷新提交表单_经验交流_
- 父div高度不能自适应子div高度的解决方案_CSS/HTML_
