Jika saya memiliki tabel HTML ... katakanlah
<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>
Bagaimana saya mengulangi semua baris tabel (dengan asumsi jumlah baris bisa berubah setiap kali saya periksa) dan mengambil nilai dari setiap sel di setiap baris dari dalam JavaScript?
javascript
Greg
sumber
sumber
table.cells
(untuk menambal beberapa kode yang lebih tua / berorientasi IE), lihat jawaban saya untuk T: Apakah browser Firefox tidak mengenali table.cell?Anda dapat mempertimbangkan menggunakan jQuery. Dengan jQuery itu sangat mudah dan mungkin terlihat seperti ini:
sumber
Dalam setiap melewati sementara loop r / c iterator meningkat dan objek baris / sel baru dari koleksi ditugaskan ke variabel baris / sel. Ketika tidak ada lagi baris / sel dalam koleksi, false ditugaskan untuk variabel baris / sel dan iterasi melalui sementara loop berhenti (keluar).
sumber
Mencoba
Tampilkan cuplikan kode
Tampilkan cuplikan kode
sumber
Solusi ini bekerja dengan sempurna untuk saya
sumber
Jika Anda menginginkannya dengan gaya fungsional, seperti ini:
Anda dapat memodifikasi objek prototipe HTMLCollection (memungkinkan untuk digunakan dengan cara yang menyerupai metode ekstensi dalam C #) dan menanamkan ke dalamnya fungsi yang mengubah koleksi menjadi array, memungkinkan untuk menggunakan fungsi urutan yang lebih tinggi dengan gaya di atas (jenis gaya linq di C #):
sumber
Object.defineProperty
jelas harus pergi sebelum sisa kode, tetapi bekerja. @Vineela Thonupunuri apakah Anda mencobanya dengan kode dalam urutan yang benar?Solusi yang lebih baik: gunakan asli Javascript
Array.from()
dan untuk mengkonversi objek HTMLCollection ke array, setelah itu Anda dapat menggunakan fungsi array standar.Anda juga bisa referensi
tr.rowIndex
dancell.colIndex
bukannya menggunakanrow_ind
dancol_ind
.Saya lebih memilih pendekatan ini dari atas 2 tertinggi sebagai jawaban karena tidak kekacauan kode Anda dengan variabel global
i
,j
,row
dancol
, dan oleh karena itu memberikan bersih kode, modular yang tidak akan memiliki efek samping (atau kenaikan serat / peringatan compiler) ... tanpa perpustakaan lain (mis. jquery).Jika Anda memerlukan ini untuk dijalankan dalam Javascript versi lama (pra-ES2015),
Array.from
dapat diisi polif.sumber
Anda dapat menggunakan
.querySelectorAll()
untuk memilih semuatd
elemen, lalu mengulanginya dengan.forEach()
. Nilai-nilainya dapat diambil dengan.innerHTML
:Jika Anda hanya ingin memilih kolom dari baris tertentu, Anda dapat menggunakan pseudo-class
:nth-child()
untuk memilih yang spesifiktr
, secara opsional bersamaan dengan child combinator (>
) (yang dapat berguna jika Anda memiliki tabel di dalam tabel):Tampilkan cuplikan kode
sumber
Menggunakan satu untuk loop:
sumber