Bagaimana cara mendapatkan nilai sel tabel menggunakan jQuery?


213

Saya mencoba mencari cara untuk mendapatkan nilai sel tabel untuk setiap baris menggunakan jQuery.

Meja saya terlihat seperti ini:

<table id="mytable">
  <tr>
    <th>Customer Id</th>
    <th>Result</th>
  </tr>
  <tr>
    <td>123</td>
    <td></td>
  </tr>
  <tr>
    <td>456</td>
    <td></td>
  </tr>
  <tr>
    <td>789</td>
    <td></td>
  </tr>
</table>

Saya pada dasarnya ingin mengulang tabel, dan mendapatkan nilai Customer Idkolom untuk setiap baris.

Dalam kode di bawah ini saya telah bekerja bahwa saya perlu melakukan ini untuk mendapatkan perulangan melalui setiap baris, tetapi saya tidak yakin bagaimana cara mendapatkan nilai sel pertama di baris.

$('#mytable tr').each(function() {
    var cutomerId = 
}

4
Berikut tutorial lengkap dengan demo langsung tentang cara mendapatkan nilai sel TD nilai codepedia.info/jquery-get-table-cell-td-value-div
Satinder singh

Jawaban:


306

Jika Anda bisa, mungkin perlu menggunakan atribut kelas pada TD yang berisi ID pelanggan sehingga Anda dapat menulis:

$('#mytable tr').each(function() {
    var customerId = $(this).find(".customerIDCell").html();    
 });

Pada dasarnya ini sama dengan solusi lain (mungkin karena saya salin-tempel), tetapi memiliki keuntungan bahwa Anda tidak perlu mengubah struktur kode Anda jika Anda bergerak di sekitar kolom, atau bahkan memasukkan ID pelanggan ke dalam <span>, asalkan Anda tetap atribut kelas dengan itu.

Omong-omong, saya pikir Anda bisa melakukannya di satu pemilih:

$('#mytable .customerIDCell').each(function() {
  alert($(this).html());
});

Jika itu membuat segalanya lebih mudah.


4
Saya akan mengatakan $ ('# mytable td.customerIDCell'). Masing-masing (function () {alert ($ (this) .html ());}); tapi +1
Matt Briggs

:-) terima kasih - tetapi bagaimana jika Anda ingin memasukkannya ke dalam rentang (saya mungkin telah memformat rentang dalam jawaban saya dengan buruk!)
Jennifer

2
Menggunakan kelas pada tr sangat membantu jika Anda memiliki <td> dalam <tfoot> (atau menggunakan <td> alih-alih <th>) dan tidak menginginkannya.
Frank Luke

$ ('# mytable tr'). masing-masing (function () {var customerId = $ (this) .find (". customerIDCell"). html ();});
Osama khodrog

tetapi jika saya ingin mendapatkan tr html juga maka apa yang bisa kita lakukan
Pengembang

132
$('#mytable tr').each(function() {
    var customerId = $(this).find("td:first").html();    
});

Apa yang Anda lakukan adalah mengulangi semua trs dalam tabel, menemukan td pertama di tr saat ini dalam loop, dan mengekstrak html dalamnya.

Untuk memilih sel tertentu, Anda dapat merujuknya dengan indeks:

$('#mytable tr').each(function() {
    var customerId = $(this).find("td").eq(2).html();    
});

Dalam kode di atas, saya akan mengambil nilai dari baris ketiga (indeks berbasis nol, sehingga indeks sel pertama adalah 0)


Inilah cara Anda dapat melakukannya tanpa jQuery:

var table = document.getElementById('mytable'), 
    rows = table.getElementsByTagName('tr'),
    i, j, cells, customerId;

for (i = 0, j = rows.length; i < j; ++i) {
    cells = rows[i].getElementsByTagName('td');
    if (!cells.length) {
        continue;
    }
    customerId = cells[0].innerHTML;
}


1
Terima kasih, ini lebih bermanfaat bagi saya karena saya tidak memiliki kontrol pada markup dokumen yang ingin saya parsing menggunakan jQuery. Jadi bisa menggunakan "td: first", "td: last", dll sangat membantu.
atomic

1
eq (2) akan mendapatkan nilai kolom ketiga, bukan baris ketiga.
live-love

Apa yang dimaksud dengan eq (2) dalam kode Anda? Maksud saya 2 adalah indeks yang td atau tr?
TechnicalKalsa

@Singh Elemen pada indeks 2 dari tdkoleksi dikembalikan oleh find("td")fungsi.
Andreas Grech

Saya suka opsi 2 dengan indeks sebagai ref, biola saya di sini
HattrickNZ

18

pendekatan yang kurang jquerish:

$('#mytable tr').each(function() {
    if (!this.rowIndex) return; // skip first row
    var customerId = this.cells[0].innerHTML;
});

ini jelas dapat diubah untuk bekerja dengan sel yang bukan yang pertama.


8
$('#mytable tr').each(function() {
  // need this to skip the first row
  if ($(this).find("td:first").length > 0) {
    var cutomerId = $(this).find("td:first").html();
  }
});

2
Tidak perlu melewati baris pertama, karena mengandung <th>, bukan <td>, sehingga data mereka tidak akan diekstraksi
Andreas Grech

7

Coba ini,

$(document).ready(function(){
$(".items").delegate("tr.classname", "click", function(data){
            alert(data.target.innerHTML);//this will show the inner html
    alert($(this).find('td:eq(0)').html());//this will alert the value in the 1st column.
    });
});

1
dari elemen kedua, bukan yang pertama, eq mulai dari 0
Claudiu Creanga

4

Tidakkah Anda menggunakan id untuk kolom itu? katakan itu:

    <table width="300" border="1">
          <tr>
            <td>first</td>
          </tr>
          <tr>
            <td>second</td>
          </tr> 
          <tr>
            <td>blah blah</td>
            <td>blah blah</td>
            <td id="result">Where the result should occur</td>
          </tr>
    </table>


<script type="text/javascript">
        $('#result').html("The result is....");
</script>

4

Ini bekerja

$(document).ready(function() {
    for (var row = 0; row < 3; row++) {
        for (var col = 0; col < 3; col++) {
            $("#tbl").children().children()[row].children[col].innerHTML = "H!";
        }
    }
});

2

coba ini :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>

<script type="text/javascript"><!--

function getVal(e) {
    var targ;
    if (!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;

    alert(targ.innerHTML);
}

onload = function() {
    var t = document.getElementById("main").getElementsByTagName("td");
    for ( var i = 0; i < t.length; i++ )
        t[i].onclick = getVal;
}

</script>



<body>

<table id="main"><tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
</tr><tr>
    <td>5</td>
    <td>6</td>
    <td>7</td>
    <td>8</td>
</tr><tr>
    <td>9</td>
    <td>10</td>
    <td>11</td>
    <td>12</td>
</tr></table>

</body>
</html>

2
$(document).ready(function() {
     var customerId
     $("#mytable td").click(function() {
     alert($(this).html());
     });
 });

2

Contoh yang berfungsi: http://jsfiddle.net/0sgLbynd/

<table>
<tr>
    <td>0</td>
    <td class="ms-vb2">1</td>
    <td class="ms-vb2">2</td>
    <td class="ms-vb2">3</td>
    <td class="ms-vb2">4</td>
    <td class="ms-vb2">5</td>
    <td class="ms-vb2">6</td>
</tr>
</table>


$(document).ready(function () {
//alert("sss");
$("td").each(function () {
    //alert($(this).html());
    $(this).html("aaaaaaa");
});
});
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.