IE 下的只读 innerHTML_javascript技巧

今天做东西遇到一个问题,我试图动态为一个表格添加多行数据,先定义了一个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

时间: 2024-10-26 02:26:34

IE 下的只读 innerHTML_javascript技巧的相关文章

Linux下nfs服务器搭建技巧

  使用linux进行嵌入式开发的时候,为了方便开发,通常是将开发板挂载到宿主机的文件系统上,然后将代码放到共享给开发板的目录中,再通过开发板运行. 首先查看是否安装了 nfs 软件包,yum list installed | grep nfs.如果安装,则可进行下面设置. nfs 服务器端配置: 1.首先建立共享目录:在根目录下建立share目录.执行 mkdir /share 2.然后对 exports 文件进行编辑:vim /etc/exports 如果之前没有通过 nfs 共享过目录,该

Windows Server 2008系统下的数据备份技巧

WindowsServer2008的设计允许管理员修改其基础结构来适应不断变化的业务需求,同时保持了此操作的灵活性.它允许用户从远程位置(如远程应用程序和终端服务网关)执行程序,这一技术为移动工作人员增强了灵活性.Windows Server 2008使用Windows部署服务(WDS)加速对IT系统的部署和维护,使用WindowsServer虚拟化(WSv)帮助合并服务器.对于需要在分支机构中使用域控制器的组织,Windows Server 2008提供了一个新配置选项:只读域控制器(RODC

win8.1专业版IE浏览器去除超链接下划线的具体技巧

  win8.1专业版IE浏览器去除超链接下划线的具体技巧由win8系统天地分享给大家! 现在Win8专业版系统中一般都有自带IE10浏览器,IE10浏览器的功能上也有很大的改进,但是有些用户则希望能够将IE浏览器显示的链接下划线取消掉,虽然可以通过清除缓存来解决,但是每次要清除太麻烦了,其实只要简单设置一下就可以了,下面就跟大家分享一下具体的设置步骤吧. 具体解决技巧如下: 第一步.进入win8系统后,您需要在win8电脑的metro菜单中直接双击进入到IE浏览器程序之中,如果大家发现win8

Win8下VPN连接与技巧

想必大家也体验到了Win8的便捷性与革命性.今天小编和大家分享一下在Win8下连接VPN方面的一些方法与技巧. 1.打开控制面板里的网络和共享中心. 2.点击:设置新的连接和网络. 3.选择连接到工作区,下一步 4.如果你的机器里还有其他连接,此处选择创建新的连接 5.选择使用我的Internet连接 6.填写Internet 地址(IP地址或者域名),并点击创建. 好了,最初步的连接建立过程已经结束了.接下来就是进行连接了. 1.点击系统消息栏的网络连接图标,打开Charm网络工具条. 2.此

Win7下IE 8使用技巧5则

IE几乎是各位菜鸟.大家上网时的首选浏览器,有关它的常规使用技巧,相信各位早已是耳熟能详了.只要你足够用心.细心,就一定会不断"挖掘"出IE新的使用技巧来.不信,就来看看下面的几则新鲜用法吧,相信会让各位有耳目一新之感! 1.寻找失落的IE启动按钮 正常情况下,IE浏览器的快速启动按钮会在系统任务栏中"安家落户",可是一旦操作不小心,往往会导致IE浏览器的快速启动按钮在任务栏中"消 失".那么 你面对IE启动按钮从系统任务栏中消失时,你该如何去将

linux下高级SSH安全技巧

  SSH服务器配置文件是/etc/ssh/sshd_conf.在你对它进行每一次改动后都需要重新启动SSH服务,以便让改动生效. 1.修改SSH监听端口 默认情况下,SSH监听连接端口22,攻击者使用端口扫描软件就可以看到主机是否运行有SSH服务,将SSH端口修改为大于1024的端口是一个明智的选择,因为大多数端口扫描软件(包括nmap)默认情况都不扫描高位端口. 打开/etc/ssh/sshd_config文件并查找下面这样的行: Port 22 修改端口号并重新启动SSH服务: /etc/

在Linux操作系统下设置NFS共享技巧

网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作. 在嵌入式Linux 的开发过程中,开发者需要在Linux 服务器上进行所有的软件开发,交叉编译后,通用FTP 方式将可执行文件下载到嵌入式系统运行,但这种方式不但效率低下,且无法实现在线的调试.因此,可以通过建立NFS,把Linux 服务器上的特定分区共享到待调试的嵌

win8系统下word只读模式怎么改?

  word是在我们生活中,无论是办公还是在网络中下载相关资料,都会经常遇到word文档的,因为word文档的便携性.以及丰富的内容,非常适合我们的办公和内容传播,通常情况下word文档都支持编辑修改的,但有部分用户却发现在win8系统下word只有只读模式,没有办法对word文档进行修改,对于出现该问题是什么原因造成的呢?我们获取word文件的修改编辑权限呢?下面看小编为大家带来的操作方法. 无法修改word文件的原因分析 1.权限问题,需要注册表文件增加超级管理员权限的,试过无效. 2.因为

最简单js代码实现select二级联动下拉菜单_javascript技巧

本文实例为大家分享了js实现select二级联动下拉菜单,供大家参考,具体内容如下 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.