2010-06-17 20 views
127

Se ho una tabella HTML ... direCome faccio a scorrere le righe e le celle della tabella in JavaScript?

<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> 

Come faccio a scorrere tutte le righe della tabella (supponendo che il numero di righe potrebbero cambiare ogni volta che posso controllare) e recuperare i valori da ogni cella in ogni riga da all'interno di JavaScript?

risposta

202

Se si desidera passare attraverso ogni riga (<tr>), conoscendo/identificare la riga (<tr>), e scorrere ogni colonna (<td>) di ogni riga (<tr>), allora questo è la strada da percorrere.

var table = document.getElementById("mytab1"); 
for (var i = 0, row; row = table.rows[i]; i++) { 
    //iterate through rows 
    //rows would be accessed using the "row" variable assigned in the for loop 
    for (var j = 0, col; col = row.cells[j]; j++) { 
    //iterate through columns 
    //columns would be accessed using the "col" variable assigned in the for loop 
    } 
} 

Se si desidera solo per passare attraverso le cellule (<td>), ignorando quale riga sei su, allora questo è la strada da percorrere.

var table = document.getElementById("mytab1"); 
for (var i = 0, cell; cell = table.cells[i]; i++) { 
    //iterate through cells 
    //cells would be accessed using the "cell" variable assigned in the for loop 
} 
+4

probabilmente 'row.cells [j]; j ++) ', giusto? – maerics

+2

grazie ... copia incolla errore. –

+3

ex2, table.cells non è compatibile con il browser – EricG

46

È possibile considerare l'utilizzo di jQuery. Con jQuery è super-facile e potrebbe essere simile a questo:

$('#mytab1 tr').each(function(){ 
    $(this).find('td').each(function(){ 
     //do your stuff, you can use $(this) to get current cell 
    }) 
}) 
+1

Impossibile usare jquery ... la società non lo consente . Non chiedere perché. – GregH

+16

Questa è una politica pazzesca. Puoi sempre copiare e incollare le funzioni rilevanti di cui hai bisogno da jQuery al tuo codice applicazione. A meno che non ci sia una politica contro l'uso del codice di altre persone online, ma allora non saresti qui. – Judy

+10

@Judy: Non sono d'accordo su "politica pazza" .... ci sono molte ragioni per non usare jQuery – Bigjim

10

var table=document.getElementById("mytab1"); 
 
var r=0; 
 
while(row=table.rows[r++]) 
 
{ 
 
    var c=0; 
 
    while(cell=row.cells[c++]) 
 
    { 
 
    cell.innerHTML='[Row='+r+',Col='+c+']'; // do sth with cell 
 
    } 
 
}
<table id="mytab1"> 
 
    <tr> 
 
    <td>A1</td><td>A2</td><td>A3</td> 
 
    </tr> 
 
    <tr> 
 
    <td>B1</td><td>B2</td><td>B3</td> 
 
    </tr> 
 
    <tr> 
 
    <td>C1</td><td>C2</td><td>C3</td> 
 
    </tr> 
 
</table>

In ogni passaggio attraverso mentre aumenta ciclo r/c iteratore e nuova riga/cella dalla raccolta viene assegnato a remare/variabili di cella. Quando non ci sono più righe/celle nella raccolta, false viene assegnata a riga/cella e iterazione mentre l'anello si ferma (esce).

+0

nel post precedente: while (cell = row [r] .cells [C++] deve essere row.cells [C++], row è l'oggetto corrente e un esempio per il codice sth: mycoldata = cell.innerHTML –

1

Questa soluzione ha funzionato perfettamente per me

var table = document.getElementById("myTable").rows; 
var y; 
for(i = 0; i < # of rows; i++) 
{ for(j = 0; j < # of columns; j++) 
    { 
     y = table[i].cells; 
     //do something with cells in a row 
     y[j].innerHTML = ""; 
    } 
} 
+0

È quello anche JavaScript? Perché il tuo ciclo for assomiglia un po 'a PHP – Cubetastic

+1

Un sacco di lingue sono sorprendentemente simili quando sai cosa cercare. PHP usa un $ davanti a ogni variabile, questo no. var è anche una parola chiave usata da JavaScript, non da PHP anche se se lo avessero aggiunto avrei potuto perderlo - edit- gah no enter per newline ... Come dico: la logica è universale. Sapere come trascriverlo in lingue alternative è un'abilità incredibilmente utile che non è È difficile da apprendere: siamo esseri intellettuali con eccellenti capacità di abbinamento di modelli, identificare i cambiamenti tra le lingue o utilizzare semplicemente la definizione del linguaggio lexer ... – Acecool

Problemi correlati