当前位置: 首页 > 编程笔记 >

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

江鸿羲
2023-03-14
本文向大家介绍IE6-IE9中tbody的innerHTML不能赋值的解决方法,包括了IE6-IE9中tbody的innerHTML不能赋值的解决方法的使用技巧和注意事项,需要的朋友参考一下
IE6-IE9中tbody的innerHTML不能赋值,重现代码如下
 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"/> 
<title>IE6-IE9中tbody的innerHTML不能复制bug</title> 
</head> 
<body> 
可以利用特性判断来看浏览器是否支持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) 

对于IE6-IE9里如果要设置tbody的innerHTML,可以使用如下替代方法
 
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方法替换
 
function setTBodyInnerHTML(tbody, html) { 
var div = document.createElement('div') 
div.innerHTML = '<table>' + html + '</table>' 
tbody.parentNode.replaceChild(div.firstChild.firstChild, tbody) 
} 

从MSDN上记录上看 col、colGroup、frameset、html、head、style、table、tfoot、tHead、title和tr的innerHTML都是只读的(IE6-IE9)。
The innerHTML property is read-only on the col, colGroup, frameSet, html, head, style, table, tBody, tFoot, tHead, title, and tr objects.
You can change the value of the title element using the document.title property.
To change the contents of the table, tFoot, tHead, and tr elements, use the table object model described in Building Tables Dynamically. However, to change the content of a particular cell, you can use innerHTML.
 类似资料:
  • 问题内容: 我有一个这样的表: 在ajax请求之后,有一个方法向我返回了以下内容: 我想像这样更改innerHTML 但是,似乎IE无法在上设置innerHTML 。谁能为我提供一个解决此问题的简单方法? 问题答案: 没错,tbody元素上的innerHTML在IE中是readOnly 对于除以下对象以外的所有对象,该属性均为可读/写状态;对于以下对象,该属性为只读:COL,COLGROUP,FR

  • 本文向大家介绍ASP 提示非法赋值的解决方法,包括了ASP 提示非法赋值的解决方法的使用技巧和注意事项,需要的朋友参考一下 分析可能是: asp的一些保留字段导致,具体的大家可以参考这篇文章:ASP常见的保留字整理 正常来说 代码没问题```ID也有值 但是库改成了SQL SERVER库 因不长用所以请教各位这个错误是哪里问题 Microsoft VBScript 运行时错误 错误 '800a01

  • 本文向大家介绍写出几种IE6 bug的解决方法相关面试题,主要包含被问及写出几种IE6 bug的解决方法时的应答技巧和注意事项,需要的朋友参考一下 1)png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.也可以引用一段脚本处理. 2)IE6双倍边距bug:在该元素中加入display:inline 或 display:block 3)像素问题 使用多个float和注释引起的 使用d

  • 本文向大家介绍innerHTML在IE中报错解决方案,包括了innerHTML在IE中报错解决方案的使用技巧和注意事项,需要的朋友参考一下 问题:开发过程中,用到循环往table里面插入tr标签,然后tr里又循环插入td,在其它浏览器都没问题,但是在IE9及以下版本中都报错: google上得到答案:由于我之前不知道错误的原因,在百度找不到解决方法,后来用谷歌搜到了,外国有人也遇到过这个问题,并指

  • 本文向大家介绍jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题,包括了jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题的使用技巧和注意事项,需要的朋友参考一下 JSON 对象是在 ECMAScript 第 5 版中实现的,此版于 2009 年 12 月发布;IE6 IE7 与 IE8(Q) (IE8(Q) 相当于 IE 5.5) 发布

  • 本文向大家介绍实现在同一方法中获取当前方法中新赋值的session值解决方法,包括了实现在同一方法中获取当前方法中新赋值的session值解决方法的使用技巧和注意事项,需要的朋友参考一下 项目开发中遇到这样一个问题,在同一方法中对session数组进行赋值,但是想在此方法中接着使用此session,因为我是用的if…elseif…,由于排斥作用,在if条件中给session赋值后,再调用方法进入另