`
Aubergine_kang
  • 浏览: 264792 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在IE浏览器里,使用tr的innerHTML不管用的解决方案(原创)

 
阅读更多

程序一个bug:

 

点击按钮,调用js,添加一行,行里多个td,td里有select、textfield等。

我使用tr的innerHTML来复制一行。

在google浏览器里点击按钮可以增加一行。

在IE里点击按钮不能增加一行。

 

 

 

例如,我如下的代码:

     function add(obj){
                var addTbl=document.getElementById("addTbl");
                var row=addTbl.rows.length-2;
               
                var oTRTemp=addTbl.rows[1];
                var oTR=addTbl.insertRow(row+1);//tr
               oTR.innerHTML=oTRTemp.innerHTML;

 

想要把第一行的tr里的所有内容,包括td,td里有select textfiled等全部复制一份,赋给先建立的一行OTR。

以上这种方式,在google浏览器可以实现。在ie里不可以实现。

 

原因:在IE里table和tr的innerhtml不管用,要降到td一级使用innerHTML

 

所以,我们要修改代码,如下:

 

  function add(obj){
                var addTbl=document.getElementById("addTbl");
                var row=addTbl.rows.length-2;
               
                var oTRTemp=addTbl.rows[1];
                var oTR=addTbl.insertRow(row+1);//tr
           
    // oTR.innerHTML=oTRTemp.innerHTML;(错误的)
               
                var cell0 = document.createElement("td");
                cell0.innerHTML = oTRTemp.children[0].innerHTML;
                oTR.appendChild(cell0);
    
               var cell1 = document.createElement("td");
                cell1.innerHTML = oTRTemp.children[1].innerHTML;
                oTR.appendChild(cell1);
               
               var cell2 = document.createElement("td");
                cell2.innerHTML = oTRTemp.children[2].innerHTML;
                oTR.appendChild(cell2);
               
                var cell3 = document.createElement("td");
                cell3.innerHTML = oTRTemp.children[3].innerHTML;
                oTR.appendChild(cell3);
               
                var cell4 = document.createElement("td");
                cell4.innerHTML = oTRTemp.children[4].innerHTML;
                oTR.appendChild(cell4);
               
                var cell5 = document.createElement("td");
                cell5.innerHTML = oTRTemp.children[5].innerHTML;
                oTR.appendChild(cell5);

 

即为:把innerhtml的应用降到了td一层。

 

 

更多信息详见:http://www.jb51.net/article/23046.htm

分享到:
评论

相关推荐

    innerHTML在IE中报错解决方案

    总结起来,innerHTML在IE浏览器的低版本中存在兼容性问题,特别是对于table和tr元素。当需要在这些元素中动态插入内容时,应避免使用innerHTML,而应转而使用DOM操作方法,如insertRow()和insertCell()等。这不仅能...

    IE 不兼容的几个js问题及解决方法

    ### IE浏览器中的JavaScript不兼容性问题及解决方案 #### 一、Table操作问题 **问题描述:** 在使用JavaScript动态创建`<table>`元素并添加行(`<tr>`)或单元格(`<td>`)时,直接使用`document.createElement()`...

    IE中关于使用innerHTML加入HTML代码的问题

    然而,在IE浏览器中,innerHTML的行为有所不同。根据Microsoft的官方文档,innerHTML属性在特定元素上是只读的,其中包括`<col>`, `<colgroup>`, `<frameset>`, `<html>`, `<head>`, `<style>`, `<table>`, `<tbody>...

    IE6-IE9中tbody的innerHTML不能赋值的解决方法

    在非IE浏览器中,这个操作是可以正常工作的,但在IE6-IE9中,`setTbody()`函数会导致错误,无法成功修改`<tbody>`的内容。 为了解决这个问题,我们需要检查浏览器是否支持`<tbody>`的`innerHTML`赋值。可以通过创建...

    IE 下的只读 innerHTML

    这个问题在IE浏览器中尤为突出,因为它对某些特定元素的`innerHTML`属性设为了只读。 在给定的问题中,开发者尝试通过JavaScript动态地向表格`<table>`的`<tbody>`元素添加新的`<tr>`行。在Firefox中,这样的操作是...

    Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法

    1. **破损的HTML标签**:当你尝试通过innerHTML添加的HTML代码中存在破损的标签,例如未闭合的`<li>`或`<div>`标签,IE浏览器可能无法正确解析,从而导致运行时错误。 2. **不合法的嵌套**:在某些情况下,IE对特定...

    IE6/7/8/9中Table/Select的innerHTML不能赋值的解决方法

    在非IE浏览器中,这段代码可以正常工作,但在IE6、7、8、9中,它将不起作用,导致无法更新表格内容。 对于表格(Table),一个可行的解决方法是利用DOM操作来创建新的表格元素,然后将其插入到文档中。例如,可以先...

    前段JS开发和DOM兼容问题大全

    9. 对于table标签的操作,IE浏览器不允许对其和tr元素的innerHTML属性赋值,且使用appendChild方法增加一个TR时也可能不起作用。在IE中,可以通过`insertRow`和`insertCell`方法动态添加行和单元格。 二、其他DOM...

    IE bug table元素的innerHTML

    总结来说,IE浏览器中的这个`table`元素`innerHTML` bug是开发者必须面对的一个经典问题。尽管现代浏览器已经大大减少了此类兼容性问题,但在维护旧项目或支持仍在使用IE的用户时,了解并掌握这些bug的解决方案仍然...

    JQuery Easy-UI DataGrid性能调优

    - 不考虑服务器返回数据所需的时间,在前端处理大数据量时,向表格中插入行(tr)的效率在IE浏览器中显著低于其他浏览器。 - 默认情况下,DataGrid使用jQuery的`html()`函数来将行添加到表格中。然而,这个函数在IE...

    jsp\(二)未知的运行时错误(ie6的未指明的错误) .doc

    在IE6及后续版本的IE浏览器中,这些元素被认为是只读的,因此直接修改它们的`innerHTML`属性会导致异常。 #### 异常代码示例 以下是触发异常的代码示例: ```html <table id="t1"></table> document....

    innerHTML与jquery里的html()区别介绍

    在内部实现时,html()方法使用了try...catch结构,这意味着当尝试设置innerHTML属性失败(例如在IE浏览器中的tbody元素上操作时),它会捕获到这个异常,并在catch块中调用this.empty().append(value)方法。...

    IE6-IE9使用JSON、table[removed]所引发的问题

    首先,JSON的问题主要表现在IE浏览器的兼容模式下。在IE的兼容模式中,当尝试使用jQuery的JSON方法时,会出现“JSON未定义”的错误。这是因为IE6-IE9在兼容模式下内置的JSON对象并未完全实现ECMAScript 5规范。在IE...

    JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐) .zip

    对于IE浏览器,可能需要使用`innerHTML`来更新表格内容,而不是`textContent`。同时,IE不支持`responseType`属性,需要在`onreadystatechange`事件中手动转换`responseText`到`DOMParser`解析的XML。 ```...

    javascript经典特效---会动的表格.rar

    我们可以通过`addEventListener`或`attachEvent`(IE浏览器)方法为元素绑定事件处理器,从而在用户执行特定操作时触发相应的动作。 五、动态表格特效实例 以“会动的表格”为例,可能的实现方式包括: 1. 鼠标...

    js图片预览

    而对于IE浏览器,则需要使用其特有的属性`filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src`来设置图片源。 ```javascript function PreviewImage(picPath, divImage, upload, width, height) { ...

    javascript动态创建表格及添加数据实例详解

    例如,在使用`insertRow`和`insertCell`方法时,作者指定了参数`-1`,这个参数在IE浏览器中是必需的,它代表在表格的最后插入新的行或单元格。 为了处理IE6的兼容性问题,作者同样使用了`innerHTML`来确保即使在IE6...

    js操作html表格, 增加,删除

    1. **兼容性**:确保你的代码对不同的浏览器有良好的兼容性,特别是对于较旧版本的IE浏览器。 2. **错误处理**:当用户尝试删除不存在的行或未定义的元素时,应有适当的错误处理机制。 3. **用户反馈**:添加视觉...

Global site tag (gtag.js) - Google Analytics