IE6-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.
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短