[英]How to append a row in table using javascript
我想使用 Javascript 在我的表中 append 新行,但新行应该像我以前的行一样。
我正在使用 CSS 来格式化我的行。
如果您使用的是 jQuery,它将是这样的:
$(document).ready(function() {
$("table tr:last").clone().appendTo("table");
})
用您的表的 id 或 class 替换表(除非您只打算拥有一张表)。
使用旧的Node.cloneNode(deep)
和HTMLTableElement.rows
:
HTML:
<table id="foo">
<tbody id="bar">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</tbody>
</table>
JS:
var foo = document.getElementById("foo");
var bar = document.getElementById("bar");
var rows = foo.rows;
var lastRow = rows[rows.length-1];
var newRow = cloneRow(lastRow, true, bar);
function cloneRow(row, append, parent)
{
var newRow = row.cloneNode(true);
if(append)
{
if(parent)
{
parent.appendChild(newRow);
}
}
return newRow;
}
为了比较,这是我的代码与 jQuery 答案并列: http://jsperf.com/dom-methods-vs-jquery-with-tables
假设您的行具有 css 样式的.row
所以你可以使用 DOM 方法来创建一个新的tr
,添加class="row"
然后添加适量的td
这是一个避免使用cloneNode
方法的解决方案,并且不复制前最后一行的内容、数据或事件,仅复制其 CSS 属性和 class 名称。
新行将具有与前最后一行相同数量的单元格。
var lastRow = myTable.rows[myTable.rows.length-1];
var newRow = myTable.insertRow();
newRow.className = lastRow.className;
newRow.style.cssText = lastRow.style.cssText;
for (var i = 0; i < lastRow.cells.length; i++) {
var newCell = newRow.insertCell(i);
newCell.className = lastRow.cells[i].className;
newCell.style.cssText = lastRow.cells[i].style.cssText;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.