zoukankan      html  css  js  c++  java
  • innerHTML在IE中报错

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


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



  • 相关阅读:
    DOM总结
    BOM总结
    备忘录设计模式
    策略模式
    迭代器模式
    观察者模式
    装饰模式
    脚本工具(获取某个文件夹下的所有图片属性批量生成css样式)
    ajax传输中文乱码解决方法
    java Serialization and Deserializaton
  • 原文地址:https://www.cnblogs.com/xiedie/p/4162582.html
Copyright © 2011-2022 走看看