Wenn ich eine HTML-Tabelle habe ... sagen Sie
<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>
Wie würde ich alle Tabellenzeilen durchlaufen (vorausgesetzt, die Anzahl der Zeilen könnte sich bei jeder Überprüfung ändern) und Werte aus jeder Zelle in jeder Zeile aus JavaScript abrufen?
javascript
GregH
quelle
quelle
table.cells
(um älteren / IE-orientierten Code zu patchen), siehe meine Antwort auf Frage: Erkennt der Firefox-Browser table.cells nicht?Sie können die Verwendung von jQuery in Betracht ziehen. Mit jQuery ist es super einfach und könnte so aussehen:
quelle
Bei jedem Durchlauf während der Schleife nimmt der R / C-Iterator zu und ein neues Zeilen- / Zellenobjekt aus der Sammlung wird Zeilen- / Zellenvariablen zugewiesen. Wenn sich keine Zeilen / Zellen mehr in der Sammlung befinden, wird false der Zeilen- / Zellenvariablen zugewiesen und durchlaufen, während die Schleife stoppt (beendet wird).
quelle
Versuchen
Code-Snippet anzeigen
Code-Snippet anzeigen
quelle
Diese Lösung hat bei mir perfekt funktioniert
quelle
Wenn Sie einen mit einem funktionalen Stil möchten, wie folgt:
Sie können das Prototypobjekt von HTMLCollection ändern (in ähnlicher Weise wie Erweiterungsmethoden in C # verwenden) und eine Funktion einbetten, die die Auflistung in ein Array konvertiert, sodass Funktionen höherer Ordnung mit dem oben genannten Stil (Art des Linq-Stils in) verwendet werden können C #):
quelle
Object.defineProperty
natürlich vor dem Rest des Codes gehen, aber es funktioniert. @ Vineela Thonupunuri hast du es mit dem Code in der richtigen Reihenfolge versucht?Bessere Lösung: Verwenden Sie das native Javascript
Array.from()
und konvertieren Sie das HTMLCollection-Objekt in ein Array. Anschließend können Sie Standard-Array-Funktionen verwenden.Sie können auch auf
tr.rowIndex
undcell.colIndex
anstelle vonrow_ind
und verweisencol_ind
.Ich viel lieber diesen Ansatz über die Top-2 Antworten höchsten gestimmt , weil es nicht mit globalen Variablen Code nicht Unordnung
i
,j
,row
undcol
, und deshalb liefert es sauber, modular Code, der keine Nebenwirkungen haben (oder Erhöhung Flusen / Compiler - Warnungen) ... ohne andere Bibliotheken (zB jquery).Wenn Sie dies benötigen, um in einer alten Version (vor ES2015) von Javascript ausgeführt zu werden,
Array.from
kann dies mehrfach ausgefüllt werden.quelle
Sie können
.querySelectorAll()
alletd
Elemente auswählen und diese dann mit durchlaufen.forEach()
. Ihre Werte können abgerufen werden mit.innerHTML
:Wenn Sie nur Spalten aus einer bestimmten Zeile auswählen möchten, können Sie mithilfe der
:nth-child()
Pseudoklasse eine bestimmte auswählentr
, optional in Verbindung mit dem untergeordneten Kombinator (>
) (was nützlich sein kann, wenn Sie eine Tabelle in einer Tabelle haben):Code-Snippet anzeigen
quelle
Verwenden einer einzelnen for-Schleife:
quelle