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 相关文章推荐
js实现运行代码需要刷新的解决方法
Aug 18 Javascript
JavaScript asp.net 获取当前超链接中的文本
Apr 14 Javascript
Javascript 加载和执行-性能提高篇
Dec 28 Javascript
js特殊字符过滤的示例代码
Mar 05 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
jQuery+HTML5实现图片上传前预览效果
Aug 20 Javascript
Jquery实现$.fn.extend和$.extend函数
Apr 14 Javascript
原生JS实现旋转木马式图片轮播插件
Apr 25 Javascript
js生成随机数(指定范围)的实例代码
Jul 10 Javascript
vue axios请求拦截实例代码
Mar 29 Javascript
JavaScript高级函数应用之分时函数实例分析
Aug 03 Javascript
js实现动态添加上传文件页面
Oct 22 Javascript
简单方法判断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
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
Jquery 弹出层插件实现代码
2009/10/24 Javascript
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
JavaScript常用工具方法封装
2019/02/12 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
Python的Flask框架中web表单的教程
2015/04/20 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
Django开发的简易留言板案例详解
2018/12/04 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
python程序如何进行保存
2020/07/03 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
入党转预备思想汇报
2014/01/07 职场文书
楼面部长岗位职责范本
2014/02/14 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
暑期实践个人总结
2015/03/06 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
Oracle用户管理及赋权
2022/04/24 Oracle