IE6-IE9中tbody的innerHTML不能赋值的解决方法


Posted in Javascript onSeptember 26, 2014

IE6-IE9中tbody的innerHTML不能赋值,重现代码如下

Js代码

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"/> 
<title>IE6-IE9中tbody的innerHTML不能复制bug</title> 
</head> 
<body style="height:3000px"> 
<table> 
<tbody> 
<tr><td>aaa</td></tr> 
</tbody> 
</table> 
<p> 
<button id="btn1">GET</button><button id="btn2">SET</button> 
</p> 
<script> 
var tbody = document.getElementsByTagName('tbody')[0] 
function setTbody() { 
tbody.innerHTML = '<tr><td>bbb</td></tr>' 
} 
function getTbody() { 
alert(tbody.innerHTML) 
} 
btn1.onclick = function() { 
getTbody() 
} 
btn2.onclick = function() { 
setTbody() 
} 
</script> 
</body> 
</html>

两个按钮,第一个获取tbody的innerHTML,第二个设置tbody的innerHTML。

获取时所有浏览器都弹出了tr的字符串,但设置时IE6-9不支持,而且报错,如图

IE6-IE9中tbody的innerHTML不能赋值的解决方法

可以利用特性判断来看浏览器是否支持tbody的innerHTML设值

var isupportTbodyInnerHTML = function () {
var table = document.createElement('table')
var tbody = document.createElement('tbody')
table.appendChild(tbody)
var boo = true
try{
tbody.innerHTML = '<tr></tr>'
} catch(e) {
boo = false
}
return boo
}()
alert(isupportTbodyInnerHTML)

点击下,看看你此时浏览本博客的浏览器是否支持

Click Me

<script type="text/javascript">// <![CDATA[ var isupportTbodyInnerHTML = function () { var table = document.createElement('table') var tbody = document.createElement('tbody') var tr = document.createElement('tr') var td = document.createElement('td') var txt = document.createTextNode('a') td.appendChild(txt) tr.appendChild(td) tbody.appendChild(tr) table.appendChild(tbody) var boo = true try{ tbody.innerHTML = '<tr><td>b</td></tr>' } catch(e) { boo = false } return boo }(); tbodyInnerHTML.onclick = function() { if (isupportTbodyInnerHTML) { alert('你的浏览器支持tbody的innerHTML赋值') } else { alert('你的浏览器是IE6-9内核,不支持tbody的innerHTML赋值') } } // ]]></script>

对于IE6-IE9里如果要设置tbody的innerHTML,可以使用如下替代方法

Js代码

function setTBodyInnerHTML(tbody, html) { 
var div = 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方法替换

Js代码

function setTBodyInnerHTML(tbody, html) { 
var div = document.createElement('div') 
div.innerHTML = '<table>' + html + '</table>' 
tbody.parentNode.replaceChild(div.firstChild.firstChild, tbody) 
}
Javascript 相关文章推荐
JavaScript 异步调用框架 (Part 4 - 链式调用)
Aug 04 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 06 Javascript
jqPlot 基于jquery的画图插件
Apr 26 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
Nov 07 Javascript
jQuery实现标题有打字效果的焦点图代码
Nov 16 Javascript
AngularJS基础 ng-src 指令简单示例
Aug 03 Javascript
什么是Vue.js框架 为什么选择它?
Oct 17 Javascript
详解如何在react中搭建d3力导向图
Jan 12 Javascript
js实现图片上传并预览功能
Aug 06 Javascript
element ui 表格动态列显示空白bug 修复方法
Sep 04 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
Oct 08 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
Feb 25 Vue.js
简单方法判断JavaScript对象为null或者属性为空
Sep 26 #Javascript
jquery uploadify 在FF下无效的解决办法
Sep 26 #Javascript
jQuery判断当前点击的是第几个li的代码
Sep 26 #Javascript
javascript 自定义回调函数示例代码
Sep 26 #Javascript
jquery和js实现对div的隐藏和显示方法
Sep 26 #Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
Sep 26 #Javascript
jquery实现一个简单好用的弹出框
Sep 26 #Javascript
You might like
SONY ICF-SW55的电路分析
2021/03/02 无线电
DOM XPATH获取img src值的query
2013/09/23 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
php链式操作的实现方式分析
2019/08/12 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
JQuery基础语法小结
2015/02/27 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
Python 中的lambda函数介绍
2018/10/10 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
如何理解Python中包的引入
2020/05/29 Python
利用python汇总统计多张Excel
2020/09/22 Python
编写python代码实现简单抽奖器
2020/10/20 Python
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
保安员岗位职责
2013/11/17 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
世界遗产导游词
2015/02/13 职场文书
公司财务部岗位职责
2015/04/14 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书