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; enter image description here

                <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)

28
demandé sur DotNet Dreamer 2013-06-15 09:50:37

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
    });

Démo: http://jsfiddle.net/bqX7Q/

63
répondu nnnnnn 2013-06-15 06:05:15

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())
    });
7
répondu sangram parmar 2013-06-15 05:57:40

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);
}
2
répondu Jurgen 2014-02-08 19:39:21

Vous pouvez essayer avec textContent.

var productId = val[key].textContent;
0
répondu Sampriti Panda 2013-06-15 05:53:34

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);                                              
   }                                                                      
});

Ejemplo completo

-1
répondu Dave Rincon 2017-09-21 01:47:47