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

最近开发时遇到个怪事,就是前台我用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时,谨慎小心。。。


谷梦科技之家



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值