Javascript 在IE中的表中追加tr
我有一个表结构:Javascript 在IE中的表中追加tr,javascript,html-table,Javascript,Html Table,我有一个表结构: <table id="tableId"> <tbody id="tbodyId"> <tr id="trId1"> <td>id</td><td>name</td> </tr> </tbody> </table> idname 我正在使用简单的Javascript添加新行,如下所示: var itemsContainer = doj
<table id="tableId">
<tbody id="tbodyId">
<tr id="trId1">
<td>id</td><td>name</td>
</tr>
</tbody>
</table>
idname
我正在使用简单的Javascript添加新行,如下所示:
var itemsContainer = dojo.byId('tbodyId');
itemCount++; //it will give id to tr i.e. trId2
var newItemNode = document.createElement('tr');
newItemNode.setAttribute("id", 'trId' + itemCount);
newItemNode.innerHTML ='<td>id</td><td>anotherName</td>';
itemsContainer.appendChild(newItemNode);
var newItemNode = document.createElement('tr');
newItemNode.setAttribute("id", 'trId' + itemCount);
newItemNode.innerHTML ='<td>id</td><td>anotherName</td>';
var itemsContainer=dojo.byId('tbodyId');
itemCount++//它将向tr提供id,即trId2
var newItemNode=document.createElement('tr');
setAttribute(“id”,“trId”+itemCount);
newItemNode.innerHTML='idanotherName';
appendChild(newItemNode);
在Firefox中一切正常,但在IE中不追加行。Firefox中的新表变为:
<table id="tableId">
<tbody id="tbodyId">
<tr id="trId1">
<td>id</td><td>name</td>
</tr>
<tr id="trId2">
<td>id</td><td>anotherName</td>
</tr>
</tbody>
</table>
idname
伊达诺瑟纳姆
我看到了其他代码和帮助。我只希望这个表中有一个tbody,没有jQuery的简单Javascript。有用于创建表单元格(和行)的特殊函数,例如-insertRow for rows和insertCell for cells-它适用于所有浏览器
var newItemNode = itemsContainer.insertRow( itemsContainer.rows.length - 1 );
newItemNode.setAttribute("id", 'trId' + itemCount);
var cell = newItemNode.insertCell( 0 );
cell.innerHTML = 'id';
另外,我认为DOJO框架具有插入行和单元格的功能,首先,在FF6和IE8中工作良好
确保真正的html具有正确的标记。您的示例显示了一个不带斜杠的结束tbody
元素
<tr id="trId2">
<td>id</td><td>anotherName</td>
</tr>
<tbody> <!-- This line should be </tbody> -->
伊达诺瑟纳姆
IE不同意接受不好的加价
此外,代码如下所示:
var itemsContainer = dojo.byId('tbodyId');
itemCount++; //it will give id to tr i.e. trId2
var newItemNode = document.createElement('tr');
newItemNode.setAttribute("id", 'trId' + itemCount);
newItemNode.innerHTML ='<td>id</td><td>anotherName</td>';
itemsContainer.appendChild(newItemNode);
var newItemNode = document.createElement('tr');
newItemNode.setAttribute("id", 'trId' + itemCount);
newItemNode.innerHTML ='<td>id</td><td>anotherName</td>';
var newItemNode=document.createElement('tr');
setAttribute(“id”,“trId”+itemCount);
newItemNode.innerHTML='idanotherName';
这正是像dojo(及其更聪明的表亲jQuery)这样的工具包构建时要避免的代码类型。我怀疑用于创建新行的代码与您正在测试的IE版本不同。试试这个
<html>
<script language = "javascript">
function kk()
{
var itemsContainer = document.getElementById("tbodyId");
var newItemNode = document.createElement('tr');
newItemNode.setAttribute("id", 'trId' + 1);
var newCellItem1 = document.createElement('td');
newCellItem1.innerHTML = "id";
var newCellItem2 = document.createElement('td');
newCellItem2.innerHTML = "anotherName";
newItemNode.appendChild(newCellItem1);
newItemNode.appendChild(newCellItem2);
itemsContainer.appendChild(newItemNode);
}
</script>
<table id="tableId">
<tbody id="tbodyId">
<tr id="trId1">
<td>id</td><td>name</td>
</tr>
</tbody>
</table>
<input type="button" value = "heihei" onclick = "kk();"></input>
</html>
函数kk()
{
var itemsContainer=document.getElementById(“tbodyId”);
var newItemNode=document.createElement('tr');
setAttribute(“id”,“trId”+1);
var newCellItem1=document.createElement('td');
newCellItem1.innerHTML=“id”;
var newCellItem2=document.createElement('td');
newCellItem2.innerHTML=“其他名称”;
appendChild(newCellItem1);
appendChild(newCellItem2);
appendChild(newItemNode);
}
idname
在“我的代码”中关闭。这是一个有问题的打字错误。我正在检查的代码是相同的。对于行,您是正确的insertRow,insertCel适用于所有浏览器。