Javascriptを使用して、テーブル内のすべての行をループせずに、<th>
を除くHTMLテーブルのすべての行を削除するにはどうすればよいですか?非常に大きなテーブルがあり、行をループして削除する間にUIをフリーズしたくない
<th>
の<thead>
行と<tbody>
の他の行を保持し、<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]);
}
最初の行を除くすべての行が削除されます。
乾杯!
次に、正しい解決策は次のとおりです。
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);
}
行を削除すると行数が減少するため、これが必要です。
i.e; iに達するまで(rows.length-1)、またはその行が既に削除される前であっても、エラー/例外(またはサイレント)が発生します。
"table.rows.length"を削除すると変更が続くため、やはり問題があります。奇数行または偶数行のみが削除されるだけです。
テーブルが1つしかないため、タイプだけで参照できると仮定します。ヘッダーを削除したくない場合:
$("tbody").children().remove()
さもないと:
$("table").children().remove()
それが役に立てば幸い!
ID
に対してtbody
を宣言できる場合は、次の関数を実行できます。
var node = document.getElementById("tablebody");
while (node.hasChildNodes()) {
node.removeChild(node.lastChild);
}
@stratによって最初に投稿されたソリューションを除くすべての行を削除する必要がありましたが、キャッチされない例外が発生しました(存在しないコンテキストでNodeを参照)。次は私のために働いた。
var myTable = document.getElementById("myTable");
var rowCount = myTable.rows.length;
for (var x=rowCount-1; x>0; x--) {
myTable.deleteRow(x);
}
以下のコードは非常に効果的です。ヘッダー行を除くすべての行を削除します。このコードは本当に
$("#Your_Table tr>td").remove();
これは、ネイティブのHTMLテーブルで繰り返し削除を行います
document.querySelectorAll("table tbody tr").forEach(function(e){e.remove()})
これはIEで機能し、テーブルのvarを宣言する必要もなく、すべての行を削除します。
for(var i = 0; i < resultsTable.rows.length;)
{
resultsTable.deleteRow(i);
}
<th>
行がnon<th>
行よりもはるかに少ない場合は、すべての<th>
行を文字列に収集し、テーブル全体を削除してから、テーブルがあった場所に<table>thstring</table>
を書き込むことができます。
編集:明らかに、「thstring」は<th>
sのすべての行のhtmlです。
th
を削除せず、内部の行を削除するだけの場合、これは完全に機能しています。
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;
結果がヘッダー行になります。それがすべての場合、パフォーマンスはループよりも劇的に高速です。
これは、ヘッダー行(最初の行)を削除せずにこれを解決するために作成した単純なコードです。
var Tbl = document.getElementById('tblId');
while(Tbl.childNodes.length>2){Tbl.removeChild(Tbl.lastChild);}
それがあなたのために働くことを願っています!!。
TbodyにIDまたはクラスを割り当てます。
document.querySelector("#tbodyId").remove();
document.querySelectorAll(".tbodyClass").remove();
IDまたはクラスに好きな名前を付けることができます。必ずしも#tbodyId
または.tbodyClass
ではありません。
Header
&Footer
を除き、このコードを使用してテーブルのBody
を削除します。
$("#YourTableId tr").not(':first, :last').remove();
テーブル本体をクリアするだけです。
$("#tblbody").html("");
TbodyタグにIDを割り当てます。すなわち。この後、次の行はテーブルヘッダー/フッターを保持し、すべての行を削除する必要があります。
document.getElementById("yourID").innerHTML="";
また、テーブル全体(ヘッダー/行/フッター)を消去する場合は、テーブルレベルでIDを設定します。