IE 下的只读 innerHTML


Posted in Javascript onAugust 21, 2009

今天做东西遇到一个问题,我试图动态为一个表格添加多行数据,先定义了一个table:

<table> 
<thead> 
</thead> 
<tbody id="filelist"> 
</tbody> 
</table>

然后在JavaScript 中这样操作:
for(var i in entries){ 
... 
var filetable = document.getElementById('filelist'); 
filetable.innerHTML += '<tr><td>111</td><td>222</td></tr>'; 
}

在FireFox 下这么干是没有问题的,但是放到 IE 下面就死活不行了,问了下同事+搜索了一下,发现在 IE 下 COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR 这些元素的 innerHTML 属性都是只读的,不能直接操作。但是也不是没有解决办法,TD 的innerHTML 还是可以操作的,上面的代码可以这样修改:
for(var i in entries){ 
... 
var filetable = document.getElementById('filelist'); 
var tr = document.createElement('tr'); 
var td1 = document.createElement('td'); 
td1.innerHTML = '111'; 
var td2 = document.createElement('td'); 
td2.innerHTML = '222'; 
tr.appendChild(td1); 
tr.appendChild(td2); 
filetable.appendChild(tr); 
}

可以先使用 DOM 的 createElement 方法创建 tr 和 td,然后对 td 的 innerHTML 进行相应操作,最后用 appendChild 方法把创建的元素添加到 DOM 树中。这样在 IE 下就可以正常运行了。需要注意的是,如果你的 table 没有 tbody,而是这样:
<table id="filelist"></table>
这个时候就不能对 table 直接使用 appendChild 方法了,因为IE6 下 table 元素是不支持 appendChild 方法的(IE8 貌似已经支持了)。
网上也有人提出用 insertRow() 等方法来做,不过这个方法对不同浏览器的兼容也是有问题的(在FireFox 下就需要使用 insertRow(-1) ),所以就没用。
BTW,虽然之前也有意识地看了不少 JS 的资料,但还是实践出真知啊,现在刚开始手忙脚乱的,学习淡定ING
Javascript 相关文章推荐
『jQuery』.html(),.text()和.val()的概述及使用
Apr 22 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
Jul 17 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
Dec 20 Javascript
JavaScript计算某一天是星期几的方法
Aug 05 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
Oct 30 Javascript
深入分析javascript中的错误处理机制
Jul 17 Javascript
如何在Angular.JS中接收并下载PDF
Nov 26 Javascript
基于js实现二级下拉联动
Dec 17 Javascript
JS敏感词过滤代码
Dec 23 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
Nov 07 Javascript
vue+elementUI实现图片上传功能
Aug 20 Javascript
jQuery实现移动端扭蛋机抽奖
Nov 08 jQuery
JS 控制CSS样式表
Aug 20 #Javascript
JS获取父节点方法
Aug 20 #Javascript
javascript 数组排序函数
Aug 20 #Javascript
用Javascript数组处理多个字符串的连接问题
Aug 20 #Javascript
JQUERY 浏览器判断实现函数
Aug 20 #Javascript
google地图的路线实现代码
Aug 20 #Javascript
JavaScript 字符串乘法
Aug 20 #Javascript
You might like
PHP集成FCK的函数代码
2008/09/27 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
利用python代码写的12306订票代码
2015/12/20 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
python得到windows自启动列表的方法
2018/10/14 Python
Python简易版图书管理系统
2019/08/12 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
Python基于内置函数type创建新类型
2020/10/22 Python
python定时截屏实现
2020/11/02 Python
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
领导检查欢迎词
2014/01/14 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
爱情保证书大全
2014/04/29 职场文书
政府门卫岗位职责
2014/04/29 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
自愿离婚协议书范本
2015/01/26 职场文书