IE6-IE9不支持table.innerHTML的解决方法分享_javascript技巧

测试代码:

复制代码 代码如下:

<table id="test">
</table>
<script>
var oTable=document.getElementById("test");
oTable.innerHTML="<tr><td>innerHTML</td></tr>";
</script>

上述代码在IE6-9中无效,直接报错:
  IE9:Invalid target element for this operation.
  IE6-8:Unknown runtime error
  查找IE的文档(http://msdn.microsoft.com/en-us/library/ms533897(VS.85).aspx)后发现有这么一段:

The innerHTML property is read-only on the colcolGroupframeSethtmlheadstyletabletBodytFoottHeadtitle, and tr objects.

所以只能用其他方案解,我的方案:

复制代码 代码如下:

var oTable=document.getElementById("test");
//oTable.innerHTML="<tr><td>innerHTML</td></tr>";
setTableInnerHTML(oTable,"<tr><td>innerHTML</td></tr>");

function setTableInnerHTML(table, html) {
if(navigator && navigator.userAgent.match(/msie/i)){
var temp = table.ownerDocument.createElement('div');
temp.innerHTML = '<table><tbody>' + html + '</tbody></table>';
if(table.tBodies.length == 0){
var tbody=document.createElement("tbody");
table.appendChild(tbody);
}
table.replaceChild(temp.firstChild.firstChild, table.tBodies[0]);
} else {
table.innerHTML=html;
}
}

这里只是对table做了处理,对其他不支持的元素可以用类似的方案。

  另外,IE10中table已经支持innerHTML了。

作者:Artwl

时间: 2024-09-17 02:51:11

IE6-IE9不支持table.innerHTML的解决方法分享_javascript技巧的相关文章

IE6-IE9使用JSON、table.innerHTML所引发的问题_javascript技巧

 一.在IE兼容模式中以及各具有IE内核的浏览器兼容模式中使用  jQuery 中的JSON函数时出现"JSON未定义"  而切换到浏览器高速模式则正常显示 解决方案 : 1.直接在使用的页面中引入json2.js (https://github.com/douglascrockford/JSON-js/blob/master/json2.js)引入方法不再赘述. 2.在页面的公共js方法里判断 if(typeof JSON == 'undefined'){ $('head').app

火狐4、谷歌12不支持Jquery Validator的解决方法分享_jquery

解决方法.在form中添加 novalidate 属性就可以解决这个问题,并且不影响在ie下的效果 例如: <form method="post" action="rival_show.jsp" id="form1" name="form1" novalidate></form> 详细解说见:http://www.w3.org/TR/html5/forms.html

Firefox和IE兼容性问题及解决方法总结_javascript技巧

在开发多语言java 网站的过程中,发现不少FF中可以正常运行的代码,可是在IE中不行,反之亦然.IE和Firefox(火狐)在JavaScript方面的不兼容及统一方法总结如下: 1.兼容firefox的 outerHTML,FF中没有outerHtml的方法 复制代码 代码如下: if (window.HTMLElement) { HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML) { var r=t

easyui window refresh 刷新两次的解决方法(推荐)_javascript技巧

这样写刷新两次 $("#windowid").window('refresh','url01.php'); $("#windowid").window('open'); 这样写刷新一次     $("#windowid").window('open'); $("#windowid").window('refresh','url01.php'); 以上这篇easyui window refresh 刷新两次的解决方法(推荐)就是

javascript代码在ie8里报错 document.getElementById(...) 为空或不是对象的解决方法[原创]_javascript技巧

ie8中对于声明文档类型更加严格如下面的代码. 运行环境: 清空 Windows平台 S60v2 S60v3 CHM PDF PPT WORD EXCEL asp asp+access asp+sqlserver asp+sql/access php源码 php php+mysqljsp asp.net源码 asp.net asp.net+access asp.net+sql asp.net+sql/access [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 可以看到这段代码在ie

Laravel中常见的错误与解决方法小结_javascript技巧

一.报错: 「Can't swap PDO instance while within transaction」 通过查询 Laravel 源代码,可以确认异常是在 setPdo 方法中抛出的: <?php public function setPdo($pdo) { if ($this->transactions >= 1) { throw new RuntimeException(" Can't swap PDO instance while within transact

js实现window.open不被拦截的解决方法汇总_javascript技巧

本文实例讲述了js实现window.open不被拦截的解决方法.分享给大家供大家参考.具体分析如下: 一.问题: 今天在处理页面ajax请求过程中,想实现请求后打开新页面,就想到通过 js window.open 来实现,但是最终都被浏览器拦截了. 二.分析: 在谷歌搜索有没有解决方法,有些说可以通过新建a标签,模拟点击来实现,但是测试发现都实现不了,照样被浏览器拦截. 最后找到了一个折中的办法,可以实现新页面打开,但是没有a标签的那种直接流量新页面的效果. 三.实现代码: 复制代码 代码如下:

IE6与IE7中,innerHTML获取param的区别_javascript技巧

代码: 复制代码 代码如下: <html> <head> <script type="text/javascript"><!-- function setMode(newMode) { var text1=document.getElementById("text1"); var cont; bTextMode = newMode; if (bTextMode) { cont=text1.innerHTML; text1.i

png在IE6 下无法透明的解决方法汇总_javascript技巧

FF和IE7已经直接支持透明的png图了,下面这个主要是解决IE6下透明PNG图片有灰底的 复制代码 代码如下: style="FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/fl.png')" 语法: filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSi