删除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()})