程序一个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浏览器的低版本中存在兼容性问题,特别是对于table和tr元素。当需要在这些元素中动态插入内容时,应避免使用innerHTML,而应转而使用DOM操作方法,如insertRow()和insertCell()等。这不仅能...
### IE浏览器中的JavaScript不兼容性问题及解决方案 #### 一、Table操作问题 **问题描述:** 在使用JavaScript动态创建`<table>`元素并添加行(`<tr>`)或单元格(`<td>`)时,直接使用`document.createElement()`...
然而,在IE浏览器中,innerHTML的行为有所不同。根据Microsoft的官方文档,innerHTML属性在特定元素上是只读的,其中包括`<col>`, `<colgroup>`, `<frameset>`, `<html>`, `<head>`, `<style>`, `<table>`, `<tbody>...
在非IE浏览器中,这个操作是可以正常工作的,但在IE6-IE9中,`setTbody()`函数会导致错误,无法成功修改`<tbody>`的内容。 为了解决这个问题,我们需要检查浏览器是否支持`<tbody>`的`innerHTML`赋值。可以通过创建...
这个问题在IE浏览器中尤为突出,因为它对某些特定元素的`innerHTML`属性设为了只读。 在给定的问题中,开发者尝试通过JavaScript动态地向表格`<table>`的`<tbody>`元素添加新的`<tr>`行。在Firefox中,这样的操作是...
1. **破损的HTML标签**:当你尝试通过innerHTML添加的HTML代码中存在破损的标签,例如未闭合的`<li>`或`<div>`标签,IE浏览器可能无法正确解析,从而导致运行时错误。 2. **不合法的嵌套**:在某些情况下,IE对特定...
在非IE浏览器中,这段代码可以正常工作,但在IE6、7、8、9中,它将不起作用,导致无法更新表格内容。 对于表格(Table),一个可行的解决方法是利用DOM操作来创建新的表格元素,然后将其插入到文档中。例如,可以先...
9. 对于table标签的操作,IE浏览器不允许对其和tr元素的innerHTML属性赋值,且使用appendChild方法增加一个TR时也可能不起作用。在IE中,可以通过`insertRow`和`insertCell`方法动态添加行和单元格。 二、其他DOM...
总结来说,IE浏览器中的这个`table`元素`innerHTML` bug是开发者必须面对的一个经典问题。尽管现代浏览器已经大大减少了此类兼容性问题,但在维护旧项目或支持仍在使用IE的用户时,了解并掌握这些bug的解决方案仍然...
- 不考虑服务器返回数据所需的时间,在前端处理大数据量时,向表格中插入行(tr)的效率在IE浏览器中显著低于其他浏览器。 - 默认情况下,DataGrid使用jQuery的`html()`函数来将行添加到表格中。然而,这个函数在IE...
在IE6及后续版本的IE浏览器中,这些元素被认为是只读的,因此直接修改它们的`innerHTML`属性会导致异常。 #### 异常代码示例 以下是触发异常的代码示例: ```html <table id="t1"></table> document....
在内部实现时,html()方法使用了try...catch结构,这意味着当尝试设置innerHTML属性失败(例如在IE浏览器中的tbody元素上操作时),它会捕获到这个异常,并在catch块中调用this.empty().append(value)方法。...
首先,JSON的问题主要表现在IE浏览器的兼容模式下。在IE的兼容模式中,当尝试使用jQuery的JSON方法时,会出现“JSON未定义”的错误。这是因为IE6-IE9在兼容模式下内置的JSON对象并未完全实现ECMAScript 5规范。在IE...
对于IE浏览器,可能需要使用`innerHTML`来更新表格内容,而不是`textContent`。同时,IE不支持`responseType`属性,需要在`onreadystatechange`事件中手动转换`responseText`到`DOMParser`解析的XML。 ```...
我们可以通过`addEventListener`或`attachEvent`(IE浏览器)方法为元素绑定事件处理器,从而在用户执行特定操作时触发相应的动作。 五、动态表格特效实例 以“会动的表格”为例,可能的实现方式包括: 1. 鼠标...
而对于IE浏览器,则需要使用其特有的属性`filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src`来设置图片源。 ```javascript function PreviewImage(picPath, divImage, upload, width, height) { ...
例如,在使用`insertRow`和`insertCell`方法时,作者指定了参数`-1`,这个参数在IE浏览器中是必需的,它代表在表格的最后插入新的行或单元格。 为了处理IE6的兼容性问题,作者同样使用了`innerHTML`来确保即使在IE6...
1. **兼容性**:确保你的代码对不同的浏览器有良好的兼容性,特别是对于较旧版本的IE浏览器。 2. **错误处理**:当用户尝试删除不存在的行或未定义的元素时,应有适当的错误处理机制。 3. **用户反馈**:添加视觉...