为了账号安全,请及时绑定邮箱和手机立即绑定

无法在IE中的tbody上设置innerHTML

无法在IE中的tbody上设置innerHTML

元芳怎么了 2019-11-02 13:26:25
我有一张这样的桌子:<table><thead>    <tr>        <th colspan="1">a</th>        <th colspan="3">b</th>    </tr></thead><tbody id="replaceMe">    <tr>        <td>data 1</td>        <td>data 2</td>        <td>data 3</td>        <td>data 4</td>    </tr></tbody></table>在ajax请求之后,有一个方法向我返回了以下内容:<tr>    <td>data 1 new</td>    <td>data 2 new</td>    <td>data 3 new</td>    <td>data 4 new</td></tr>我想像这样更改innerHTMLdocument.getElementById('replaceMe').innerHTML = data.responseText;但是,似乎IE无法在上设置innerHTML <tbody>。谁能为我提供一个解决此问题的简单方法?
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

以上两个答案似乎都不清楚。另外,永远不会删除创建的div,因此反复调用这些函数会占用内存。尝试这个:



// this function must come before calling it to properly set “temp” 

function MSIEsetTBodyInnerHTML(tbody, html) { //fix MS Internet Exploder’s lameness

  var temp = MSIEsetTBodyInnerHTML.temp;

  temp.innerHTML = '<table><tbody>' + html + '</tbody></table>';

  tbody.parentNode.replaceChild(temp.firstChild.firstChild, tbody);  }

MSIEsetTBodyInnerHTML.temp = document.createElement('div');


if (navigator  &&  navigator.userAgent.match( /MSIE/i ))  

  MSIEsetTBodyInnerHTML(tbody, html);

else  //by specs, you can not use “innerHTML” until after the page is fully loaded  

  tbody.innerHTML=html;    

即使使用此代码,MSIE似乎也无法正确调整应用程序中表格单元格的大小,但是我正在用生成的可变内容填充空的tbody标签,而thead单元格的colspan值设置为固定值:生成的肢体内可能存在的最大单元数。表格正文为50个单元格宽时,仅显示两列。也许如果表最初是填充的,并且单元格被相同的内部结构替换,则此方法将起作用。Google的Chrome浏览器在重建表格方面做得非常出色,而Opera的桌面浏览器可以将更多列的大小调整得很好,但是如果删除列,则剩余的列宽度将保持原来的宽度。但是在Opera中,通过隐藏表格(display = none)然后重新显示表格(display = table),生成的表体单元格大小正确。我已经放弃了Firefox。这是2012年的MSIE-6,这是一场噩梦,必须为此添加额外的标记才能使HTML-CSS布局正常工作,因为它甚至不符合MSIE现在的标准。因此,我尚未在Firefox中测试过tbody.innerHTML的工作原理。

查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 567 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号