it-swarm.com.de

Durchlaufen Sie jede HTML-Tabellenspalte und rufen Sie die Daten mit jQuery ab

ich versuche, die Daten in das HTML zu bekommen <tbody>. Grundsätzlich habe ich viele Zeilen wie folgt; 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>

Jetzt durchlaufe ich und versuche, die Werte <td> So zu erhalten;

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

Aber ich bin nicht in der Lage, die Werte (HTML-Text) der einzelnen Zeilen zu erhalten. Ich möchte diese Werte lokalen Variablen zuweisen.
Außerdem möchte ich nicht das innerHTML einer Schaltfläche (die sich in jeder Zeile befindet erhalten

32
DotNet Dreamer

Die Verwendung einer verschachtelten .each() bedeutet, dass Ihre innere Schleife immer nur ein Td ausführt. Sie können also die productId und product und quantity nicht festlegen. alles in der inneren Schleife.

Auch die Verwendung von function(key, val) und dann val[key].innerHTML Ist nicht richtig: Die .each() -Methode übergibt den Index (eine Ganzzahl) und das eigentliche Element. Sie würden also function(i, element) und dann element.innerHTML verwenden. Obwohl jQuery auch this auf das Element setzt, können Sie einfach this.innerHTML Sagen.

Wie auch immer, hier ist ein Weg, um es zum Laufen zu bringen:

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

Demo: http://jsfiddle.net/bqX7Q/

68
nnnnnn

versuche dies

    $("#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())
    });
8
sangram parmar

Mein erster Beitrag ...

Ich habe Folgendes versucht: Wenn Sie 'tr' für 'td' ändern, werden alle HTMLRowElements in ein Array eingefügt, und wenn Sie textContent verwenden, wird Object in String geändert

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

Wenn Sie Ihre Tabelle erstellen, setzen Sie Ihre td mit 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
Dave Rincon

Sie können es mit textContent versuchen.

var productId = val[key].textContent;
0
Zero Fiber