Preluare date din linie tabel html afisat cu Ajax

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
andras
Mesaje: 430

Preluare date din linie tabel html afisat cu Ajax

Salut,
Din ajax() imi rezulta randurile unui tabel html:

Cod: Selectaţi tot

<?php
$re_html ='';
    while($rand = mysql_fetch_assoc($rezultateistoric)) {
$re_html .='<tr >';                              
$re_html .='<td style="color: #BFBFBF;font-weight:bold;word-wrap: break-word;width:330px;">'.$rand['pn'].' </td>';
$re_html .='<td style="color: #BFBFBF;font-weight:bold;word-wrap: break-word;width:340px;">'.$rand['denumire'].' </td>';              
$re_html .='</tr>';      
} 
echo $re_html;
?>
Pe care il pun in pagina in tabel html intr-un div:

Cod: Selectaţi tot

<div style="overflow-y:auto;height:60%;" >
<table cellspacing="0" cellpadding="0" frame="box" rule="all" style="height:10%;border: 5px solid #DBDBDB;" >
<tbody id="idistoric" class="clickable" >
<!-- aici vine rezultatul functiei ajax() -->
</tbody>
</table>
</div>
Folosesc acest cod javascript/jquery sa accesez coloana pe care se da clic:

Cod: Selectaţi tot

<script  type="text/javascript">
$(document).ready(function()  {
  $('.clickable tr td').on('mousedown', function (e) {
    clickableRowListener(this, e);
  });
});
function clickableRowListener(that, e) {
 alert('salut');
}
</script>

Cum preiau datele unei linii pe care dau click intr-o tabela html venita din ajax() bazindu-ma numai pe table.row.cells[0] si table.row.cells[1] ?
Am n linii in functie de numarul de inregistrari din BD si am 2 coloane, cells[0] respectiv cells[1]. Valoarea acestora vreau sa preiau cu jQuery. Sau se poate si altfel? Multumesc.

MarPlo Mesaje: 4343
Salut
Daca randurile de tabel sunt afisate prin ajax, ca sa preiei in javascript datele unei coloane pe care se da clic, cel mai usor e sa adaugi atributul "onclick" in tag-urile <td> cand le creezi pe server (in php) prin care trimiti obiectul acelui element la o functie JS din acea pagina.
De exemplu, in php:

Cod: Selectaţi tot

$re_html .='<td class="clasa_pt_css" onclick="numeFun(this);">'.$rand['pn'].' </td>'; 
Iar in <script> din pagina creezi functia accesata:

Cod: Selectaţi tot

function numeFun(elm){
  alert(elm.innerHTML);
}

andras Mesaje: 430
Functioneaza, dar as vrea sa mai fac un pas, sa preiau din linia respectiva (in care dau click) ambele <td>-uri (am 2 coloane) in variabile separate in JS. Cum fac asta? Multumesc.

MarPlo Mesaje: 4343
Se poate adauga atributul "onclick" in tag-ul <tr>, apoi te poti folosi de functia din acest exemplu:

Cod: Selectaţi tot

<table border="1">
<tr onclick="lineData(this);">
  <td class="clasa_pt_css"> col1</td>
  <td class="clasa_pt_css"> col2</td>
</tr>
</table>

<script>
function lineData(elm){
  var cols = elm.querySelectorAll('td');  // get columns from elm (row)
  var c1_cnt = cols[0].innerHTML;  // content 1st column
  var c2_cnt = cols[1].innerHTML;  // content 2nd column

  // test
  alert(c1_cnt +' / '+ c2_cnt);
}
</script>
Demo:
Clic pe o coloana
col1 | col2

andras Mesaje: 430
Ca de obicei solutiile date de tine ma ajuta mult. De dimineata ma chinui sa gasesc o varianta. Multumesc mult.

Subiecte similare