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 相关文章推荐
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
Oct 19 Javascript
js中生成map对象的方法
Jan 09 Javascript
jQuery实现友好的轮播图片特效
Jan 12 Javascript
浅谈JavaScript字符串与数组
Jun 03 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
Sep 14 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
Jul 04 Javascript
微信小程序 Audio API详解及实例代码
Sep 30 Javascript
jquery中each循环的简单回滚操作
May 05 jQuery
jQuery日期范围选择器附源码下载
May 23 jQuery
微信小程序button组件使用详解
Jan 31 Javascript
iview table render集成switch开关的实例
Mar 14 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 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下载xls文件(自己动手写的)
2014/04/18 PHP
PHP中date与gmdate的区别及默认时区设置
2014/05/12 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
什么是JavaScript
2009/08/13 Javascript
js获取form的方法
2015/05/06 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
Python中的localtime()方法使用详解
2015/05/22 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
欧姆龙医疗欧洲有限公司:Omron Healthcare Europe B.V
2020/06/13 全球购物
五水共治捐款倡议书
2014/05/14 职场文书
出国留学担保书
2014/05/20 职场文书
绿色出行口号
2014/06/18 职场文书
学校教师安全责任书
2014/07/23 职场文书
六查六看自查报告
2014/10/14 职场文书
暑期社会实践证明书
2014/11/17 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers