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]);
}
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. deteRow 的参数是固定的
这是必需的,因为当我们删除一行时,行数会减少。
例如,当 i 到达(rows.length-1)时,或者甚至在该行已经被删除之前,您将遇到一些错误/异常(或者一个静默的错误/异常)。
2. rowCount 在 for 循环启动之前采用
因为当我们删除“ table.rows.length”时,它会不断变化,所以同样会出现一些问题,只有奇数或偶数行会被删除。< br/>
假设 <table>元素是可访问的(例如通过 id) ,您可以选择表体子节点,然后删除每个子节点,直到不再保留。如果您已经正确地构造了 HTML 表,即在 <thead>元素中使用了表头,那么这只会删除表行。
我们使用 lastElementChild来保留父元素(但不保留它们的后代)的所有非元素(即 # text 节点和)子元素。有关更一般的示例,以及删除元素所有子元素的各种方法的分析,请参见 这么回答。
const tableEl = document.getElementById('my-table');
const tableBodyEl = tableEl.querySelector('tbody');
// or, directly get the <tbody> element if its id is known
// const tableBodyEl = document.getElementById('table-rows');
while (tableBodyEl.lastElementChild) {
tableBodyEl.removeChild(tableBodyEl.lastElementChild);
}