Como posso excluir todas as linhas de uma tabela HTML, exceto o <th>
usando Javascript, e sem percorrer todas as linhas da tabela? Eu tenho uma tabela muito grande e não quero congelar a IU enquanto estou percorrendo as linhas para excluí-las
javascript
html
html-table
K ''
fonte
fonte
removeChild
leva apenas um único elemento DOM.Respostas:
Mantenha a
<th>
linha em a<thead>
e as outras linhas em a<tbody>
e substitua<tbody>
por uma nova e vazia.ie
fonte
document.getElementById('tbody').innerHTML = '';
isso removerá todas as linhas:
fonte
$("tbody#id tr").remove()
Muito bruto, mas isso também funciona:
fonte
<th>
aninhados em a<thead>
. Esta é provavelmente a maneira mais sintaticamente correta de construir a tabela.var bodyRef = document.getElementById('myTable').getElementsByTagName('tbody')[0];
bodyRef.innerHTML = '';
Esta é uma questão antiga, mas recentemente tive um problema semelhante.
Eu escrevi este código para resolver isso:
Isso removerá todas as linhas, exceto a primeira.
Felicidades!
fonte
Pontos a serem observados em Cuidado com os erros comuns :
Se o seu índice inicial for 0 (ou algum índice inicial), então, o código correto é:
NOTAS
1. o argumento para deleteRow é corrigido,
isso é necessário, pois, conforme excluímos uma linha, o número de linhas diminui.
ie; no momento em que i atinge (rows.length - 1), ou mesmo antes que a linha já tenha sido excluída, então você terá algum erro / exceção (ou um silencioso).
2. o rowCount é obtido antes do loop for começar, pois à medida que excluímos "table.rows.length", ele continuará mudando, então, novamente, você tem algum problema, que apenas linhas pares ou ímpares são excluídas.
Espero que ajude.
fonte
Supondo que você tenha apenas uma tabela para que possa referenciá-la apenas com o tipo. Se você não quiser excluir os cabeçalhos:
de outra forma:
espero que ajude!
fonte
Eu precisei excluir todas as linhas, exceto a primeira e a solução postada por @strat, mas isso resultou em uma exceção não detectada (referenciando Node no contexto onde ele não existe). O seguinte funcionou para mim.
fonte
Se você pode declarar um
ID
for,tbody
pode simplesmente executar esta função:fonte
isso funcionaria com a exclusão de iteração na tabela HTML no nativo
fonte
o código abaixo funciona muito bem. Ele remove todas as linhas, exceto a linha de cabeçalho. Portanto, este código realmente t
fonte
Assing alguns id para tbody tag. ie. Depois disso, a linha a seguir deve reter o cabeçalho / rodapé da tabela e remover todas as linhas.
E, se você quiser que toda a tabela (cabeçalho / linhas / rodapé) apague, defina o id no nível da tabela, ou seja
fonte
Se você não deseja remover
th
e apenas deseja remover as fileiras de dentro, está funcionando perfeitamente.fonte
Que tal agora:
Quando a página for carregada pela primeira vez, faça o seguinte:
Então, quando você quiser limpar a mesa:
O resultado será a (s) sua (s) linha (s) de cabeçalho, se você só começou com isso, o desempenho é dramaticamente mais rápido do que o loop.
fonte
Se você tiver muito menos
<th>
linhas do que não<th>
linhas, poderá coletar todas as<th>
linhas em uma string, remover a tabela inteira e escrever<table>thstring</table>
onde a tabela costumava estar.EDIT: Onde, obviamente, "thstring" é o html para todas as linhas de
<th>
s.fonte
<th>
s como elementos DOM, limpe o innerHTML da tabela e anexe os<th>
s a ele novamente.Isso funciona no IE sem precisar declarar um var para a tabela e excluirá todas as linhas:
fonte
este é um código simples que acabei de escrever para resolver isso, sem remover a linha do cabeçalho (a primeira).
Espero que funcione para você!!.
fonte
Atribua um id ou uma classe para o seu corpo.
Você pode nomear seu id ou classe como quiser, não necessariamente
#tbodyId
ou.tbodyClass
.fonte
Apenas limpe o corpo da mesa.
fonte
const table = document.querySelector ('table'); table.innerHTML === ''? null: table.innerHTML = ''; o javascript acima funcionou bem para mim. Ele verifica se a tabela contém dados e, em seguida, limpa tudo, incluindo o cabeçalho.
fonte