Saya memiliki tabel yang diisi secara dinamis. Saya perlu mendapatkan data sel saat mengkliknya. Bagaimana itu bisa dilakukan.

Saya mengisi tabel dengan cara berikut: -

 function fetchAllRecords() {
    $('#tab_logic').empty();
    var html="";
    html+="<thead> <tr>  <th scope='col'>Order Id</th> <th scope='col'>Latitude/Longitude</th> <th scope='col'>OTP</th> <th scope='col'>Call Status</th> <th scope='col'>Call Duration</th> <th scope='col'>Call Unit</th> </tr> </thead> <tbody> ";
    for (var i = 1; i <= 6; i++) {
      html+="<tr> <td onclick='tableFunction()'> <p id='trow"+i+"'> Data</p></td> <td> <p> Data </p></td> <td> <p> Data </p></td> <td> <p> Data </p></td> <td> <p> Data </p></td> <td> <p> Data </p></td></tr>"
    }
    html+="</tbody>";
    $('#tab_logic').append(html);

    }

Saya mencoba mendapatkan data seperti ini tetapi tidak berhasil

function tableFunction(){
    var txt = $(this).text();
    alert(txt);

    }
-1
Aman Kumar Sinha 23 Januari 2020, 13:39

2 jawaban

Jawaban Terbaik

Anda harus meneruskan this sebagai argumen ke fungsi.

      html+="<tr> <td onclick='tableFunction(this)'> <p id='trow"+i+"'> Data</p></td> <td> <p> Data </p></td> <td> <p> Data </p></td> <td> <p> Data </p></td> <td> <p> Data </p></td> <td> <p> Data </p></td></tr>"

Dan kemudian gunakan parameter fungsi

function tableFunction(element) {
    var txt = element.innerText;
    alert(txt);
}

Tetapi alih-alih menggunakan JavaScript sebaris, saya sarankan Anda menggunakan delegasi acara di jQuery. Lihat Pengikatan peristiwa pada elemen yang dibuat secara dinamis?

2
Barmar 23 Januari 2020, 10:42

Ini dapat dengan mudah dicapai dengan menggunakan .On() untuk memilih baris yang dibuat secara dinamis.

$(document).on('click','td',function() {
 alert($(this).text());
});

Saya akan menyarankan daripada langsung menargetkan td, menambahkan kelas terpisah untuk td yang dibuat secara dinamis dan memanggil mereka dengan nama kelas ini akan lebih baik.

0
Yadukrishnan M 23 Januari 2020, 11:20