Comment puis-je supprimer toutes les lignes d'un tableau HTML, à l'exception du <th>
, avec Javascript et sans avoir à parcourir toutes les lignes du tableau? J'ai une très grande table et je ne veux pas geler l'interface utilisateur pendant que je parcours les lignes pour les supprimer.
Conservez la ligne <th>
dans un <thead>
et les autres lignes dans un <tbody>
puis remplacez le <tbody>
par un nouveau, vide.
c'est à dire.
var new_tbody = document.createElement('tbody');
populate_with_new_rows(new_tbody);
old_tbody.parentNode.replaceChild(new_tbody, old_tbody)
cela supprimera toutes les lignes:
$("#table_of_items tr").remove();
Très brut, mais cela fonctionne aussi:
var Table = document.getElementById("mytable");
Table.innerHTML = "";
C'est une vieille question, mais j'ai récemment eu un problème similaire.
J'ai écrit ce code pour le résoudre:
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]);
}
Cela supprimera toutes les lignes, sauf la première.
À votre santé!
alors, la solution correcte est:
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);
}
cela est nécessaire car lors de la suppression d'une ligne, le nombre de lignes diminue.
c'est à dire; au moment où j'atteins (rows.length - 1), ou même avant que cette ligne soit déjà supprimée, vous aurez donc une erreur/exception (ou une silencieuse).
comme nous supprimons "table.rows.length", les modifications continuent, de sorte que vous avez à nouveau un problème: seules les lignes impaires ou paires sont supprimées.
En supposant que vous n’ayez qu’une table, vous pouvez la référencer avec seulement le type . Si vous ne voulez pas supprimer les en-têtes:
$("tbody").children().remove()
autrement:
$("table").children().remove()
j'espère que ça aide!
Si vous pouvez déclarer une ID
pour tbody
, vous pouvez simplement exécuter cette fonction:
var node = document.getElementById("tablebody");
while (node.hasChildNodes()) {
node.removeChild(node.lastChild);
}
J'avais besoin de supprimer toutes les lignes à l'exception de la première et de la solution publiée par @strat, mais cela a entraîné une exception non interceptée (référençant le nœud dans un contexte où il n'existe pas). Ce qui suit a fonctionné pour moi.
var myTable = document.getElementById("myTable");
var rowCount = myTable.rows.length;
for (var x=rowCount-1; x>0; x--) {
myTable.deleteRow(x);
}
le code Give ci-dessous fonctionne très bien ... Il supprime toutes les lignes sauf la ligne d'en-tête. Donc ce code vraiment t
$("#Your_Table tr>td").remove();
Cela fonctionne dans IE sans même avoir à déclarer une var pour la table et supprimera toutes les lignes:
for(var i = 0; i < resultsTable.rows.length;)
{
resultsTable.deleteRow(i);
}
Si vous avez beaucoup moins de lignes <th>
que de lignes non -<th>
, vous pouvez collecter toutes les lignes <th>
dans une chaîne, supprimer la table entière, puis écrire <table>thstring</table>
là où elle se trouvait.
EDIT: Où, évidemment, "thstring" est le code HTML pour toutes les lignes de <th>
s.
cela fonctionnerait la suppression d'itération dans un tableau HTML en natif
document.querySelectorAll("table tbody tr").forEach(function(e){e.remove()})
c'est un code simple que je viens d'écrire pour résoudre ce problème, sans supprimer la ligne d'en-tête (la première).
var Tbl = document.getElementById('tblId');
while(Tbl.childNodes.length>2){Tbl.removeChild(Tbl.lastChild);}
J'espère que ça marche pour toi!!.
Si vous ne voulez pas supprimer th
et que vous voulez simplement supprimer les lignes à l'intérieur, cela fonctionne parfaitement.
var tb = document.getElementById('tableId');
while(tb.rows.length > 1) {
tb.deleteRow(1);
}
À l'exception de Header
& Footer
, vous utilisez ce code pour supprimer la Body
de la table.
$("#YourTableId tr").not(':first, :last').remove();
Que dis-tu de ça:
Lors du premier chargement de la page, procédez comme suit:
var myTable = document.getElementById("myTable");
myTable.oldHTML=myTable.innerHTML;
Ensuite, lorsque vous souhaitez effacer le tableau:
myTable.innerHTML=myTable.oldHTML;
Le résultat sera votre rangée d'en-tête. Si c'est tout ce que vous avez commencé avec, les performances sont considérablement plus rapides que la boucle.
Attribuez un identifiant ou une classe à votre tbody.
document.querySelector("#tbodyId").remove();
document.querySelectorAll(".tbodyClass").remove();
Vous pouvez nommer votre identifiant ou votre classe comme bon vous semble, pas nécessairement #tbodyId
ou .tbodyClass
.
Il suffit de vider le corps de la table.
$("#tblbody").html("");
Assing quelque id à tbody tag. c'est à dire. . Après cela, la ligne suivante doit conserver l’en-tête/le pied de table et supprimer toutes les lignes.
document.getElementById("yourID").innerHTML="";
Et si vous souhaitez que la table entière (en-tête/rangées/pied de page) soit effacée, définissez l'id au niveau de la table i.e.