加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

innerHTML在IE中报错解决方案

发布时间:2016-11-24 06:45:58 所属栏目:Linux 来源:站长网
导读:问题:开发过程中,用到循环往table里面插入tr标签,然后tr里又循环插入td,在其它浏览器都没问题,但是在IE9及以下版本中都报错: google上得到答案:由于我之前不知道错误的原因,在百度找不到解决方法,后来用谷歌搜到了,外国有人也遇到过这个问题,并

问题:开发过程中,用到循环往table里面插入tr标签,然后tr里又循环插入td,在其它浏览器都没问题,但是在IE9及以下版本中都报错:

innerHTML在IE中报错解决方案

google上得到答案:由于我之前不知道错误的原因,在百度找不到解决方法,后来用谷歌搜到了,外国有人也遇到过这个问题,并指出了问题的所在:http://www.aachin.info/techen/error-on-ie-9-script600-invalid-target-element-for-this-operation/#63;amp;utm_source=rssutm_medium=rssutm_campaign=error-on-ie-9-script600-invalid-target-element-for-this-operationinnerHTML在IE中报错解决方案演示代码:

复制代码 代码如下:
lt;!DOCTYPE htmlgt;
lt;html lang="zh-cn"gt;
nbsp;nbsp;nbsp; lt;headgt;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; lt;meta http-equiv="content-type" content="text/html;charset=utf-8" /gt;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; lt;titlegt;默认标题lt;/titlegt;
nbsp;nbsp;nbsp; lt;/headgt;
nbsp;nbsp;nbsp; lt;bodygt;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; lt;table id="mytable" border="1" cellpadding="1" cellspacing="0"gt;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; lt;trgt;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; lt;tdgt;222lt;/tdgt;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; lt;/trgt;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; lt;/tablegt;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; lt;script type="text/javascript"gt;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; var mytable = document.getElementById('mytable');
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; var tr = mytable.getElementsByTagName('tr')[0];
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; var td = mytable.getElementsByTagName('td')[0];
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; //读取innerHTML(IE任何版本都不报错,IE6未测)
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; alert(mytable.innerHTML);
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; alert(tr.innerHTML);
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; alert(td.innerHTML);
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; //写入innerHTML
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; // mytable.innerHTML = 'lt;trgt;lt;tdgt;11111lt;/tdgt;lt;/trgt;'; //IE9及以下报错
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; // tr.innerHTML = 'lt;tdgt;11111lt;/tdgt;';nbsp;nbsp;nbsp; //IE9及以下报错
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; // td.innerHTML = '11111';nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; //所有版本不报错(IE6未测)
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; //解决方法,使用DOM的原始操作方法或者表格操作方法
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; // var btnRow = mytable.insertRow();
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; // var cell = btnRow.insertCell(btnRow.getElementsByTagName('td').length);
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; // cell.innerHTML = "some html text";
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; lt;/scriptgt;
nbsp;nbsp;nbsp; lt;/bodygt;
lt;/htmlgt;

得出结论:IE9及以下版本的table以及tr的innerHTML属性都是只读的,你可以用它读取table或者tr中的值,但不能写入,写入就报错,另外在IE9及以下版本中td的innerHTML可读可写。解决方法:使用原始的DOM操作方法或者表格操作方法见演示代码。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读