将特定列添加或相乘

时间:2015-03-13 13:57:06

标签: jquery html multiple-columns

我已经看到了一些jquery和添加列值的例子;但是,这些示例只有一列和一个值。

我想知道你是否有多列,那么你如何抓住特定的列?

例如,如果我想将所有数量列添加到一起将成本列与其相邻数量相乘?

到目前为止,我已经开始设置,但它不起作用。最初我试过

 child_nodes.eq(2).text() 

获取数量列,但我知道我的逻辑已关闭。

$(document).ready(function() {

$('#checkout').on('click', function() {

        item_count();
});
});

function item_count(){

    $('.product').each(function() {

        //find number of child nodes
        var child_nodes = $(this).text(); //children returns all

        var count = "";
        for (var i=0; i<child_nodes.length; i++){
        //whole row output
        count += child_nodes.eq(i).text() + "\n";
        }
    });

    //var total = parseInt($('.product').val());
    var total += parseInt(count);
    //update value
    return $('#nitems').text(total);

};

我刚开始尝试j查询,所以我觉得我的代码看起来很无聊,所以我类比。

<h4>Shopping Cart</h4>
 <table class='table'>
  <thead>
    <tr>
      <th>Product</th><th>Unit cost</th><th>Quantity</th>
    </tr>
  </thead>
  <tbody>
    <tr class='product'>
      <td>Milk Chocolate</td>
      <td>7.48</td>
      <td>5</td>
    </tr>
    <tr class='product'>
      <td>Assorted Fine Chocolates</td>
      <td>9.98</td>
      <td>7</td>
    </tr>

    <tr class='product'>
      <td>Assorted Milk & Dark Chocolates</td>
      <td>12.98</td>
      <td>9<td>
    </tr>

    <tr class='product'>
      <td>Assorted Dessert Truffles</td>
      <td>15.98</td>
      <td>4</td>
    </tr>
   </tbody>
  </table>
</div>
</div>
<div class='row'>
<div class='col-md-4'>

  <h3>Finalize Sale </h3>
  <table class='table'>
    <tr>
      <td>Total Items</td>
      <td><span  id="nitems" >0</td>
    </tr>
    <tr>
      <td>Subtotal</td>
      <td><span  id="subtotal" >0</td>
    </tr>
    <tr>
      <td>5% Sales tax</td>
      <td><span id="tax" >0</td>
    </tr>
    <tr>
      <td>Total</td>
      <td><span id="total" >0</td>
    </tr>
    <tr>
      <td>Final amount (with 15% discount)</td>
      <td><span id="final"  >0</td>
    </tr>
  </table>

1 个答案:

答案 0 :(得分:0)

.each函数应该使用一个将用作迭代器的变量。改变这个:

$('.product').each(function() {

到这个

$('.product').each(function(index, val) {

然后在里面,您应该可以访问每个TD。

此外,这一行:

count += child_nodes.eq(i).text()

将为您提供5794的值。它会附加每个字符串,而不是添加int值。你会想要这样的东西:

count += parseInt($("td", val).eq(3)), 10);

要把它们放在一起,我就这样做......

function item_count(){

    var count = 0;

    $('.product').each(function(index, val) {

        var total += parseInt($("td", val).eq(3), 10);
    }       

    $('#nitems').val(total);
};

请注意,这些都未经过测试,因此可能需要进行一些调整。