Se eu tiver uma tabela HTML ... diga
<div id="myTabDiv">
<table name="mytab" id="mytab1">
<tr>
<td>col1 Val1</td>
<td>col2 Val2</td>
</tr>
<tr>
<td>col1 Val3</td>
<td>col2 Val4</td>
</tr>
</table>
</div>
Como eu itera através de todas as linhas da tabela (assumindo que o número de linhas possa mudar cada vez que eu checo) e recupero valores de cada célula em cada linha no JavaScript?
javascript
GregH
fonte
fonte
table.cells
(para corrigir algum código antigo / orientado para o IE), consulte minha resposta para P: O navegador Firefox não reconhece table.cells?Você pode considerar o uso do jQuery. Com o jQuery, é super fácil e pode ser assim:
fonte
Em cada passagem, enquanto o iterador do loop r / c aumenta e o novo objeto de linha / célula da coleção é atribuído às variáveis de linha / célula. Quando não há mais linhas / células na coleção, false é atribuído à variável de linha / célula e a iteração ocorre enquanto o loop para (sai).
fonte
Experimentar
Mostrar snippet de código
Mostrar snippet de código
fonte
Esta solução funcionou perfeitamente para mim
fonte
Se você quer um com um estilo funcional, assim:
Você pode modificar o objeto protótipo de HTMLCollection (permitindo usar de maneira semelhante aos métodos de extensão em C #) e incorporar nele uma função que converte coleção em matriz, permitindo usar funções de ordem superior com o estilo acima (tipo de estilo linq em C #):
fonte
Object.defineProperty
obviamente tem que ir antes do resto do código, mas funciona. @Vineela Thonupunuri você tentou com o código na ordem correta?Melhor solução: use o nativo do Javascript
Array.from()
e converta o objeto HTMLCollection em uma matriz, após o qual você pode usar as funções padrão da matriz.Você também pode fazer referência
tr.rowIndex
e, emcell.colIndex
vez de usarrow_ind
ecol_ind
.Eu prefiro muito mais esta abordagem ao longo do topo 2 mais votado respostas porque não encher o seu código com variáveis globais
i
,j
,row
ecol
, e, portanto, fornece um código limpo e modular que não terá quaisquer efeitos secundários (ou fiapos raise / avisos do compilador) ... sem outras bibliotecas (por exemplo, jquery).Se você precisar que ele seja executado em uma versão antiga (pré-ES2015) do Javascript,
Array.from
poderá ser preenchido com polyfilled.fonte
Você pode usar
.querySelectorAll()
para selecionar todos ostd
elementos e, em seguida, fazer um loop sobre eles com.forEach()
. Seus valores podem ser recuperados com.innerHTML
:Se você deseja selecionar apenas colunas de uma linha específica, pode usar a pseudo-classe
:nth-child()
para selecionar uma específicatr
, opcionalmente em conjunto com o combinador filho (>
) (que pode ser útil se você tiver uma tabela em uma tabela):Mostrar snippet de código
fonte
Usando um loop for único:
fonte