2015-03-13 112 views
0

我已经看过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> 
+0

您能否提供比“不起作用”更多的细节?它是否给出错误?没有给你想要的结果? – Scottie 2015-03-13 14:06:04

+0

唯一的错误是我显然缺少一个; ...从 'count + = child_nodes.eq(i).text()+“\ n”; } }); // var total = parseInt($('。product')。val()); var total + = parseInt(count);' – narue1992 2015-03-13 14:12:19

+0

@Scottie除此之外,什么都不打印 – narue1992 2015-03-13 14:12:57

回答

0

.each函数应该接受一个将用作迭代器的变量。更改此:那里面

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

这个

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

,你应该有访问每个TD的的。

另外,该线路:

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

将会给你的5794的值它附加每个串的,不加整型值。你会想是这样的:

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

注意,这是所有未测试的,所以有些调整可能是必要的。

+0

所以我是jquery的新手,所以你可以解释value索引和val是如何自动理解值的吗?换句话说,我没有看到你宣布他们。另外“10”是什么意思? – narue1992 2015-03-13 14:20:50

+0

老实说,我不清楚.each的内部工作如何分配索引和val字段。这对我来说是一件很好的事情!只需说,它就可以工作。出于某种神秘原因,默认情况下,parseInt使用基数8。以下是描述它的链接:http://stackoverflow.com/questions/5600366/why-does-the-radix-for-javascripts-parseint-default-to-8 – Scottie 2015-03-13 16:14:47