Si tengo una tabla HTML ... digamos
<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>
¿Cómo iteraría a través de todas las filas de la tabla (suponiendo que el número de filas podría cambiar cada vez que verifico) y recuperar valores de cada celda en cada fila desde JavaScript?
javascript
GregH
fuente
fuente
table.cells
(parchear un código más antiguo / orientado a IE), vea mi respuesta a P: ¿El navegador Firefox no reconoce table.cells?Puede considerar usar jQuery. Con jQuery es súper fácil y podría verse así:
fuente
En cada paso, mientras el iterador r / c de bucle aumenta y se asigna un nuevo objeto fila / celda de la colección a las variables fila / celda. Cuando no hay más filas / celdas en la colección, se asigna falso a la variable fila / celda e iteración mientras el ciclo se detiene (sale).
fuente
Tratar
Mostrar fragmento de código
Mostrar fragmento de código
fuente
Esta solución funcionó perfectamente para mí.
fuente
Si quieres uno con un estilo funcional, así:
Puede modificar el prototipo de objeto de HTMLCollection (que permite usar de una manera que se asemeja a los métodos de extensión en C #) e incrustar en él una función que convierte la colección en matriz, lo que permite usar funciones de orden superior con el estilo anterior (tipo de estilo linq en C#):
fuente
Object.defineProperty
obviamente, tiene que pasar antes de que el resto del código, pero funciona. @Vineela Thonupunuri, ¿lo intentaste con el código en el orden correcto?Mejor solución: use el nativo de Javascript
Array.from()
y convierta el objeto HTMLCollection en una matriz, después de lo cual puede usar funciones de matriz estándar.También puede hacer referencia
tr.rowIndex
y encell.colIndex
lugar de usarrow_ind
ycol_ind
.Me gusta mucho más este enfoque sobre la parte superior 2 de más alto votaron respuestas porque no recarga su código con variables globales
i
,j
,row
ycol
, por tanto, que entrega limpia código y modular que no tenga efectos secundarios (o pelusa de subida / advertencias del compilador) ... sin otras bibliotecas (por ejemplo, jquery).Si necesita que esto se ejecute en una versión anterior (anterior a ES2015) de Javascript,
Array.from
puede rellenarse.fuente
Puede usar
.querySelectorAll()
para seleccionar todos lostd
elementos y luego recorrerlos con.forEach()
. Sus valores se pueden recuperar con.innerHTML
:Si solo desea seleccionar columnas de una fila específica, puede utilizar la pseudoclase
:nth-child()
para seleccionar una específicatr
, opcionalmente junto con el combinador secundario (>
) (que puede ser útil si tiene una tabla dentro de una tabla):Mostrar fragmento de código
fuente
Usando un solo bucle for:
fuente