IE 下的只读 innerHTML

 更新时间:2009年08月21日 00:25:25   作者:  
可以先使用 DOM 的 createElement 方法创建 tr 和 td,然后对 td 的 innerHTML 进行相应操作,最后用 appendChild 方法把创建的元素添加到 DOM 树中。这样在 IE 下就可以正常运行了。
今天做东西遇到一个问题,我试图动态为一个表格添加多行数据,先定义了一个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

相关文章

  • three.js中文文档学习之创建场景

    three.js中文文档学习之创建场景

    这篇文章主要给大家介绍了three.js中文文档学习之创建场景的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • Javascript日期时间函数的使用方法举例

    Javascript日期时间函数的使用方法举例

    在JavaScript中日期时间函数是一组用于操作和处理日期和时间的函数,这些函数可以用于获取当前日期和时间、格式化日期和时间、计算日期和时间的差异、转换日期和时间的格式等,这篇文章主要给大家介绍了关于Javascript日期时间函数的使用方法,需要的朋友可以参考下
    2024-02-02
  • JavaScript基本数据类型及值类型和引用类型

    JavaScript基本数据类型及值类型和引用类型

    大家经常可以见到javascript中的一些数据类型,比如“undefined”、“boolean”、“string”等等,这篇文章就和大家一起来学习JavaScript基本数据类型及值类型和引用类型,有需要的童鞋参考下,本文写的不好地方,还望大家提出,共同学习进步
    2015-08-08
  • JavaScript定时器常见用法实例分析

    JavaScript定时器常见用法实例分析

    这篇文章主要介绍了JavaScript定时器常见用法,结合实例形式分析了JavaScript定时器常见功能、应用及相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • js中符号转意问题示例探讨

    js中符号转意问题示例探讨

    符号转意,大家或许有所了解,知识在使用中或许不是那么的在意,其实这个问题很重要,下面为大家讲解下js符号转意问题相关知识,感兴趣的朋友可以参考下
    2013-08-08
  • 微信小程序获取验证码60秒倒计时功能

    微信小程序获取验证码60秒倒计时功能

    这篇文章主要介绍了微信小程序获取验证码60秒倒计时模板,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • JS实现选择TextArea内文本的方法

    JS实现选择TextArea内文本的方法

    这篇文章主要介绍了JS实现选择TextArea内文本的方法,涉及javascript针对页面TextArea元素焦点设置及文本获取的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • Bootstrap弹出带合法性检查的登录框实例代码【推荐】

    Bootstrap弹出带合法性检查的登录框实例代码【推荐】

    这篇文章主要介绍了Bootstrap弹出带合法性检查的登录框实例代码【推荐】的相关资料,需要的朋友可以参考下
    2016-06-06
  • 详解用Webpack与Babel配置ES6开发环境

    详解用Webpack与Babel配置ES6开发环境

    这篇文章主要介绍了详解用Webpack与Babel配置ES6开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 静态页面的值传递(三部曲)

    静态页面的值传递(三部曲)

    静态页面的值传递(三部曲)...
    2006-09-09

最新评论