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 相关文章推荐
不一样的文字闪烁 轮番闪烁
Nov 11 Javascript
js取消单选按钮选中示例代码
Nov 14 Javascript
js实现简单锁屏功能实例
May 27 Javascript
使用jquery实现仿百度自动补全特效
Jul 23 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
Mar 21 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
Dec 08 Javascript
js中el表达式的使用和非空判断方法
Mar 28 Javascript
小程序清理本地缓存的方法
Aug 17 Javascript
用vue-cli开发vue时的代理设置方法
Sep 20 Javascript
详解JavaScript中的强制类型转换
Apr 15 Javascript
JavaScript运动原理基础知识详解
Apr 02 Javascript
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项目的方法
2006/10/09 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
JavaScript中Boolean对象的属性解析
2015/10/21 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
jQuery实现动态操作table行
2020/11/23 jQuery
Python比较两个图片相似度的方法
2015/03/13 Python
python设计模式大全
2016/06/27 Python
python中异常捕获方法详解
2017/03/03 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
python requests 测试代理ip是否生效
2018/07/25 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
python截取两个单词之间的内容方法
2018/12/25 Python
详解python运行三种方式
2019/05/13 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
详解如何减少python内存的消耗
2019/08/09 Python
基于python中__add__函数的用法
2019/11/25 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
五十岁生日宴会答谢词
2014/01/15 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
升职自我推荐信范文
2015/03/25 职场文书
生活小常识广播稿
2015/08/19 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书