问题:开发过程中,用到循环往table里面插入tr标签,然后tr里又循环插入td,在其它浏览器都没问题,但是在IE9及以下版本中都报错:
 
google上得到答案:由于我之前不知道错误的原因,在百度找不到解决方法,后来用谷歌搜到了,外国有人也遇到过这个问题,并指出了问题的所在:
 
 
演示代码:
    1. <!DOCTYPE html>
    2. <html lang="zh-cn">
    3. <head>
    4. <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    5. <title>默认标题</title>
    6. </head>
    7. <body>
    8. <table id="mytable" border="1" cellpadding="1" cellspacing="0">
    9. <tr>
    10. <td>222</td>
    11. </tr>
    12. </table>
    13. <script type="text/javascript">
    14. var mytable = document.getElementById('mytable');
    15. var tr = mytable.getElementsByTagName('tr')[0];
    16. var td = mytable.getElementsByTagName('td')[0];
    17.  
    18. //读取innerHTML(IE任何版本都不报错,IE6未测)
    19. alert(mytable.innerHTML);
    20. alert(tr.innerHTML);
    21. alert(td.innerHTML);
    22.  
    23. //写入innerHTML
    24. // mytable.innerHTML = '<tr><td>11111</td></tr>'; //IE9及以下报错
    25. // tr.innerHTML = '<td>11111</td>'; //IE9及以下报错
    26. // td.innerHTML = '11111'; //所有版本不报错(IE6未测)
    27.  
    28. //解决方法,使用DOM的原始操作方法或者表格操作方法
    29. // var btnRow = mytable.insertRow();
    30. // var cell = btnRow.insertCell(btnRow.getElementsByTagName('td').length);
    31. // cell.innerHTML = "some html text";
    32. </script>
    33. </body>
    34. </html>
     
  1. 得出结论:IE9及以下版本的table以及tr的innerHTML属性都是只读的,你可以用它读取table或者tr中的值,但不能写入,写入就报错,另外在IE9及以下版本中td的innerHTML可读可写。
 
解决方法:使用原始的DOM操作方法或者表格操作方法,见演示代码。

有朋友回复说可以用jquery解决,是的,可以这个问题确实可以用jquery解决,但是其实jquery内部使用的方法,还是原始的js操作,而且,我当时的情况没法使用jquery,因为我是网上直接找的一个日历代码,它是用原生js写的,我没法在里面夹杂着jquery写。

innerHTML在IE中报错的更多相关文章

  1. js 在myeclipse中报错

    转myeclipse中的js文件报错   整理一下,希望帮到 遇到此问题的哥们.姐们. 方法一:myeclipse9 很特殊 和 myeclipse10 不一样,所以myeclipse9 不能使用该方 ...

  2. 转帖:解决jquery.js在myeclipse中报错的问题

    转载地址:http://tieba.baidu.com/p/1993753087 从官方下载的jquery.js在myeclipse始终用个大大的红叉,看着很不爽,如何解决呢:jquery.js在my ...

  3. laravel框架中报错 DataTables warning: table id=xxx-table - Cannot reinitialise DataTable.

    laravel框架中报错 DataTables warning: table id=xxx-table - Cannot reinitialise DataTable. 分析: initializin ...

  4. springboot项目中报错:listener does not currently know of SID given in connect descriptor

    springboot项目中报错:listener does not currently know of SID given in connect descriptor 出现这个问题的原因是SID写错了 ...

  5. idea中Entity实体中报错:cannot resolve column/table/...解决办法。

    idea中Entity实体中报错:cannot resolve column/table/...解决办法. 若idea中Entity实体中报错: cannot resolve column.... c ...

  6. ThinkPHP5.0中报错could not find driver的解决方式

    这个报错是我的tp5项目转移到另外的服务器中发生的错误, 其中报错信息中还包含这pdo等字眼 解决方法:在php.ini中开启php_pdp_mysql.dll

  7. jquery中报错Uncaught ReferenceError: $ is not defined的解决办法

    jquery中报错提示为:Uncaught ReferenceError: $ is not defined 这个错误的原因就是你没有引入jquery库文件或者引入的路径不对造成的

  8. Springboot打包放到Tomcat中报错 One or more listener fail to start

    1.问题: Springboot项目直接启动不报错,打war包放到外部容器Tomcat.东方通上,在@Weblistener注解的监听器类中报错 One or more listener fail t ...

  9. ubuntu16.04安装openssh中报错解决

    在使用apt-get直接进行安装时会报错: sudo apt-get install openssh-server 正在读取软件包列表... 完成 正在分析软件包的依赖关系树       正在读取状态 ...

随机推荐

  1. new Thread的弊端(转)

    new Thread的弊端如下: a. 每次new Thread新建对象性能差.b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom.c. 缺乏更多功能,如 ...

  2. DataGridView DataGridViewCheckBoxColumn编辑时实时触发事件

    正常响应CellValueChanged()事件时,当改变checkbox状态时,只有当焦点离开该单元格时才能触发CellValueChanged()事件, 如果要改变checkbox值时实时触发Ce ...

  3. 什么是C#,.NET,ASP.NET?

    C#,.NET,ASP.NET这三个词,对于大家并不陌生,最近花了点时间去了解了下.最终才发现我以前的理解有些偏差.现在分享给大家. 什么是C#?      C#是微软公司发布的一种面向对象的.运行于 ...

  4. java中Object相关的几个方法

    protected Object clone()创建并返回此对象的一个副本. String     toString()返回该对象的字符串表示. boolean equals(Object obj)指 ...

  5. Oracle执行计划——all_rows和first_rows(n) 优化器模式

    0. 环境创建 SQL> create usertest identified by test 2 default tablespace users 3 temporary tablespace ...

  6. c# WinForm开发 DataGridView各种操作总结大全

    一.单元格内容的操作 //取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Consol ...

  7. MySQL中char、varchar和text的区别

    三者空间占用方面: char:存储定长数据很方便,CHAR字段上的索引效率极高,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填 ...

  8. top -Hp pid 显示所有的线程

    可以显示所有的线程 top -Hp pid [root@jiangyi01.sqa.zmf /home/ahao.mah] #top -Hp 41330 top - 22:49:40 up 27 da ...

  9. PHP学习之[第01讲]开启PHP学习之路,融入新互联网时代

    小编本身现在是手机应用客户端开发者,包括iOS和Android. 学习PHP有两个目的: 1.为移动端提供服务: 2.向后台项目的架构方面学习.

  10. Project Euler:Problem 47 Distinct primes factors

    The first two consecutive numbers to have two distinct prime factors are: 14 = 2 × 7 15 = 3 × 5 The ...