删除HTML表格中的所有行

如何删除HTML表中除了<th>之外的所有行,并且没有循环遍历表中的所有行? 我有一个非常巨大的表,我不想冻结用户界面,而我循环行删除它们

<th>行保留在<thead> ,将其他行保存在<tbody>然后用新的空的replace<tbody>

 var new_tbody = document.createElement('tbody'); populate_with_new_rows(new_tbody); old_tbody.parentNode.replaceChild(new_tbody, old_tbody) 

这将删除所有行:

 $("#table_of_items tr").remove(); 

非常粗糙,但这也是有效的:

 var Table = document.getElementById("mytable"); Table.innerHTML = ""; 

这是一个老问题,但是我最近也遇到过类似的问题。
我写了这个代码来解决它:

 var elmtTable = document.getElementById('TABLE_ID_HERE'); var tableRows = elmtTable.getElementsByTagName('tr'); var rowCount = tableRows.length; for (var x=rowCount-1; x>0; x--) { elmtTable.removeChild(tableRows[x]); } 

这将删除除第一个以外的所有行。

干杯!

要注意的是,关于常见的错误:

如果你喜欢代码从0开始索引(或从开始的一些索引),

那么,正确的解决办法是:

 var tableHeaderRowCount = 1; var table = document.getElementById('WRITE_YOUR_HTML_TABLE_NAME_HERE'); var rowCount = table.rows.length; for (var i = tableHeaderRowCount; i < rowCount; i++) { table.deleteRow(tableHeaderRowCount); } 

1. deleteRow的参数是固定的

这是必需的,因为当我们删除一行,行数减less。
即; 当我达到(rows.length – 1),甚至在该行已经被删除之前,所以你会有一些错误/exception(或无声)。

2.在for循环开始之前进行rowCount

因为当我们删除“table.rows.length”将不断变化,所以你有一些问题,只有奇数或偶数行才被删除。

小心这些,节省时间,祝你好运。

假设你只有一个表,所以你可以参考它只是types。 如果你不想删除标题:

 $("tbody").children().remove() 

除此以外:

 $("table").children().remove() 

希望能帮助到你!

我需要删除除了第一个和@strat发布的解决scheme之外的所有行,但导致未捕获的exception(在不存在的上下文中引用节点)。 以下为我工作。

 var myTable = document.getElementById("myTable"); var rowCount = myTable.rows.length; for (var x=rowCount-1; x>0; x--) { myTable.deleteRow(x); } 

如果你的行less于非<th>行,你可以把所有的行都收集到一个string中,删除整个表,然后在表中使用<table>thstring</table>成为。

编辑:显然,“thstring”是所有行的html。

这在IE中工作,甚至不需要为表格声明一个var,并将删除所有行:

 for(var i = 0; i < resultsTable.rows.length;) { resultsTable.deleteRow(i); } 

这是一个简单的代码,我只是写了解决这个问题,而不删除标题行(第一个)。

 var Tbl = document.getElementById('tblId'); while(Tbl.childNodes.length>2){Tbl.removeChild(Tbl.lastChild);} 

希望对你有帮助!!。

如果你可以为tbody声明一个ID ,你可以简单地运行这个函数:

 var node = document.getElementById("tablebody"); while (node.hasChildNodes()) { node.removeChild(node.lastChild); } 

下面给出的代码工作很好。 它删除标题行以外的所有行。 所以这个代码真的很

 $("#Your_Table tr>td").remove(); 

只要清除表体。

 $("#tblbody").html(""); 

如果你不想删除,只想删除里面的行,这是完美的工作。

 var tb = document.getElementById('tableId'); while(tb.rows.length > 1) { tb.deleteRow(1); } 

这个怎么样:

首次加载页面时,请执行以下操作:

 var myTable = document.getElementById("myTable"); myTable.oldHTML=myTable.innerHTML; 

那么当你想清除表格时:

 myTable.innerHTML=myTable.oldHTML; 

结果将是您的标题行(s),如果这一切开始,性能显着快于循环。

这将工作在本地HTML表中迭代删除

 document.querySelectorAll("table tbody tr").forEach(function(e){e.remove()})