Як я можу видалити всі рядки таблиці HTML, крім тих <th>
, що використовують Javascript, і не перебираючи всі рядки таблиці? У мене дуже величезна таблиця, і я не хочу заморожувати інтерфейс, поки я переглядаю рядки, щоб їх видалити
Як я можу видалити всі рядки таблиці HTML, крім тих <th>
, що використовують Javascript, і не перебираючи всі рядки таблиці? У мене дуже величезна таблиця, і я не хочу заморожувати інтерфейс, поки я переглядаю рядки, щоб їх видалити
Відповіді:
Зберігайте <th>
рядок в а, <thead>
а інші рядки в, а <tbody>
потім замініть на <tbody>
новий, порожній.
тобто
var new_tbody = document.createElement('tbody');
populate_with_new_rows(new_tbody);
old_tbody.parentNode.replaceChild(new_tbody, old_tbody)
document.getElementById('tbody').innerHTML = '';
це видалить всі рядки:
$("#table_of_items tr").remove();
$("tbody#id tr").remove()
Дуже грубо, але це також працює:
var Table = document.getElementById("mytable");
Table.innerHTML = "";
<th>
вкладені в <thead>
. Це, мабуть, найбільш синтаксично правильний спосіб побудови таблиці.
var bodyRef = document.getElementById('myTable').getElementsByTagName('tbody')[0];
bodyRef.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 виправлений,
це потрібно, оскільки, коли ми видаляємо рядок, кількість рядків зменшується.
тобто; до моменту, коли я досягнув (рядки. довжина - 1), або навіть до того, як цей рядок уже видалений, тож у вас буде якась помилка / виняток (або тихий).
2. rowCount береться перед початком циклу for
оскільки, коли ми видаляємо "table.rows.length", буде продовжувати змінюватися, тому знову виникає проблема, через яку видаляються лише непарні чи парні рядки.
Сподіваюся, що це допомагає.
Припускаючи, що у вас є лише одна таблиця, щоб ви могли посилатися на неї лише з типом. Якщо ви не хочете видаляти заголовки:
$("tbody").children().remove()
інакше:
$("table").children().remove()
сподіваюся, це допоможе!
Мені потрібно було видалити всі рядки, за винятком першого та рішення, опублікованого @strat, але це призвело до непоміченого винятку (посилання на Node в контексті, де він не існує). У мене працювало наступне.
var myTable = document.getElementById("myTable");
var rowCount = myTable.rows.length;
for (var x=rowCount-1; x>0; x--) {
myTable.deleteRow(x);
}
Присвоєння якогось ідентифікатора тегу tbody. тобто Після цього в наступному рядку слід зберегти верхній / нижній колонтитул таблиці та видалити всі рядки.
document.getElementById("yourID").innerHTML="";
І якщо ви хочете, щоб вся таблиця (верхній / нижній колонтитул) була знищена, встановіть ідентифікатор на рівні таблиці, тобто
Якщо ви не хочете видаляти, 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;
Результатом будуть ваші рядки заголовка, якщо це все, з чого ви почали, продуктивність значно швидша, ніж циклічна.
Якщо у вас набагато менше <th>
рядків, ніж не <th>
рядків, ви можете зібрати всі <th>
рядки у рядок, видалити всю таблицю, а потім написати <table>thstring</table>
там, де раніше була таблиця.
EDIT: Де, очевидно, "thstring" - це html для всіх рядків <th>
s.
<th>
s як елементи DOM, очистіть внутрішній HTML таблиці, а потім знову додайте <th>
s до нього.
Це працює в IE, навіть не потрібно оголошувати змінну для таблиці, і буде видалено всі рядки:
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);}
Сподіваюся, це працює для вас !!.
Просто очистіть корпус столу.
$("#tblbody").html("");
таблиця const = document.querySelector ('таблиця'); table.innerHTML === ''? null: table.innerHTML = ''; вищевикладений JavaScript добре працював для мене. Він перевіряє, чи містить таблиця якісь дані, а потім очищає все, включаючи заголовок.
removeChild
приймає лише один елемент DOM.