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 相关文章推荐
Javascript中eval函数的使用方法与示例
Apr 09 Javascript
Extjs学习笔记之一 初识Extjs之MessageBox
Jan 07 Javascript
javascript中&quot;/&quot;运算符常见错误
Oct 13 Javascript
ModelDialog JavaScript模态对话框类代码
Apr 17 Javascript
Extjs4中的分页应用结合前后台
Dec 13 Javascript
微信小程序 教程之事件
Oct 18 Javascript
AngularJS指令中的绑定策略实例分析
Dec 14 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
Dec 29 Javascript
JS验证字符串功能
Feb 22 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
Mar 19 Javascript
vue在路由中验证token是否存在的简单实现
Nov 11 Javascript
原生js实现拖拽移动与缩放效果
Aug 24 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
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
JS 文件大小判断的实现代码
2010/04/07 Javascript
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
JS回调函数深入理解
2019/10/16 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
Python之web模板应用
2017/12/26 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
python退出循环的方法
2020/06/18 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
大班幼儿评语大全
2014/04/30 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
七年级作文之英语老师
2019/10/28 职场文书
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
Python学习之包与模块详解
2022/03/19 Python