IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解决方案
IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值,重现代码如下
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8"/>
<title>IE6-IE9中tbody的innerHTML不能复制bug</title>
</head>
<body>
可以利用特性判断来看浏览器是否支持tbody的innerHTML设值
varisupportTbodyInnerHTML=function(){
vartable=document.createElement('table')
vartbody=document.createElement('tbody')
table.appendChild(tbody)
varboo=true
try{
tbody.innerHTML='<tr></tr>'
}catch(e){
boo=false
}
returnboo
}()
alert(isupportTbodyInnerHTML)
对于IE6-IE9里如果要设置tbody的innerHTML,可以使用如下替代方法
functionsetTBodyInnerHTML(tbody,html){
vardiv=document.createElement('div')
div.innerHTML='<table>'+html+'</table>'
while(tbody.firstChild){
tbody.removeChild(tbody.firstChild)
}
tbody.appendChild(div.firstChild.firstChild)
}
用一个div来包含一个table,然后删除tbody里的所有元素,最后给tbody添加div的第一个元素的第一个元素,即div>table>tr。
当然还有一个更精简的版本,它直接采用replaceChild方法替换
functionsetTBodyInnerHTML(tbody,html){
vardiv=document.createElement('div')
div.innerHTML='<table>'+html+'</table>'
tbody.parentNode.replaceChild(div.firstChild.firstChild,tbody)
}
从MSDN上记录上看col、colGroup、frameset、html、head、style、table、tfoot、tHead、title和tr的innerHTML都是只读的(IE6-IE9)。
TheinnerHTMLpropertyisread-onlyonthecol,colGroup,frameSet,html,head,style,table,tBody,tFoot,tHead,title,andtrobjects.
Youcanchangethevalueofthetitleelementusingthedocument.titleproperty.
Tochangethecontentsofthetable,tFoot,tHead,andtrelements,usethetableobjectmodeldescribedinBuildingTablesDynamically.However,tochangethecontentofaparticularcell,youcanuseinnerHTML.
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下