Boucle à travers chaque colonne de tableau HTML et obtient les données en utilisant jQuery
je vais essayer d'obtenir les données à l'intérieur de la balise html <tbody>
. En gros, j'ai beaucoup de lignes comme ceci;
<tbody>
<tr>
<td>63</td>
<td>Computer</td>
<td>3434</td>
<td>
<button class="btn-medium btn-danger remove" id="mprDetailRemove"><i class="icon-remove"></i></button>
</td>
</tr>
<tr>
<td>64</td>
<td>Stationary</td>
<td>111</td>
<td>
<button class="btn-medium btn-danger remove" id="Button1"><i class="icon-remove"></i></button>
</td>
</tr>
<tr>
<td>64</td>
<td>Stationary</td>
<td>11</td>
<td>
<button class="btn-medium btn-danger remove" id="Button2"><i class="icon-remove"></i></button>
</td>
</tr>
</tbody>
maintenant, je suis en boucle à travers et essayer d'obtenir le <td>
valeurs comme ceci:
var table = $("#mprDetailDataTable table tbody");
table.find('tr').each(function (key, val) {
$(this).find('td').each(function (key, val) {
var productId = val[key].innerHTML; // this isn't working
var product = ?
var Quantity = ?
});
});
mais, je ne suis pas capable d'obtenir les valeurs(texte html) de chaque ligne. je veux assigner ces valeurs aux variables locales.
Aussi, je ne veux pas avoir l' innerHTML
un bouton (qui est dans chaque rangée)
5 réponses
en utilisant un .each()
signifie que votre boucle interne fait un td à la fois, donc vous ne pouvez pas définir le productId
et product
et quantity
dans la boucle interne.
Aussi à l'aide de function(key, val)
et val[key].innerHTML
n'est pas bon:.each()
méthode passe l'index (un entier) et l'élément réel, donc vous utiliserez function(i, element)
et element.innerHTML
. Bien que jQuery fixe aussi this
pour l'élément, de sorte que vous pouvez juste dire this.innerHTML
.
bref, voici un moyen d'obtenir c':
table.find('tr').each(function (i, el) {
var $tds = $(this).find('td'),
productId = $tds.eq(0).text(),
product = $tds.eq(1).text(),
Quantity = $tds.eq(2).text();
// do something with productId, product, Quantity
});
essayez ceci
$("#mprDetailDataTable tr:gt(0)").each(function () {
var this_row = $(this);
var productId = $.trim(this_row.find('td:eq(0)').html());//td:eq(0) means first td of this row
var product = $.trim(this_row.find('td:eq(1)').html())
var Quantity = $.trim(this_row.find('td:eq(2)').html())
});
mon premier message...
j'ai essayé ceci: changez ' tr 'pour ' td' et vous obtiendrez tous les éléments HTMLRowElements dans un tableau, et en utilisant textContent vous changerez D'objet en chaîne
var dataArray = [];
var data = table.find('td'); //Get All HTML td elements
// Save important data into new Array
for (var i = 0; i <= data.size() - 1; i = i + 4)
{
dataArray.push(data[i].textContent, data[i + 1].textContent, data[i + 2].textContent);
}
Vous pouvez essayer avec textContent.
var productId = val[key].textContent;
quand vous créez votre table, mettez votre td avec class = "suma"
$(function(){
//funcion suma todo
var sum = 0;
$('.suma').each(function(x,y){
sum += parseInt($(this).text());
})
$('#lblTotal').text(sum);
// funcion suma por check
$( "input:checkbox").change(function(){
if($(this).is(':checked')){
$(this).parent().parent().find('td:last').addClass('suma2');
}else{
$(this).parent().parent().find('td:last').removeClass('suma2');
}
suma2Total();
})
function suma2Total(){
var sum2 = 0;
$('.suma2').each(function(x,y){
sum2 += parseInt($(this).text());
})
$('#lblTotal2').text(sum2);
}
});