欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

innerHTML在IE下的特殊:不支持table作为容器

程序员文章站 2024-03-25 12:59:58
...

最近开发时遇到个怪事,就是前台我用ajax访问后台 ,拿到数据后,拼好HTML代码,用的是

document.getElementById("id").innerHTML=tblhtml
赋值到一个table中,这个在FireFox和Chrome里是正常的,提交测试后。。发现在IE下有问题,别管IE几都有问题,拼接好的HTML片段就是加不上去。用 alert输出下tblhtml试试,也正常,百度一下发现:

因为IE在对innerHTML进行写操作时会检查element是否具备做为这些内容中html对象容器的要求,比如将<p>作为容器,它的innerHTML里面放入<li>,马上就会出错。更加另人郁闷的地方:<table>  <tbody>  <tr> 在ie中也无法作为innerHTML的容器使用在他们里头加入正确的<td>都不行,然而<td>却可以作为容器,放入包括<table>的innerHTML。
页面是UI人员设计的,所以打算找UI换成 <div> , <span>结构。后来突然想起了JQuery也有给元素赋HTML的函数,就是

$("#id").html(tblhtml)

试了一下,果然好使,所以就将所有的innerHTML改成了JQuery的html()函数。

看来IE果然与众不同啊,,遇到这个问题,如果又不想使用JQuery的话,那只能绕开Table咯。

另外 还有一个问题就是,给table赋值上html代码后,浏览器渲染的时候会自动加上<tbody>标签,如果这个时候在获取<table>的innerHTML的话,就会带着<tbody>,这些代码如果和其他的<tr>拼接的话,其他的会显示不出来的哦。。。经验而已,一句话,就是对<table><tr>实行innerHTML时,谨慎小心。。。


innerHTML在IE下的特殊:不支持table作为容器