我希望在更新数量时更新购物车页面中所有产品的总数。 我试过的是
$d=$table.each(function(){
return Number($(this).find('.cart_price>p>span').html())*Number($(this).find('.cart_quantity_input').val());
}).toArray();
alert($d.length);
但似乎只从第一个产品中获取价值
我尝试.map()
但结果相同。
我甚至尝试了total+=
而不是return
(total=0
首先初始化),但它的返回值仅来自第一个<tr>
。
<tr>
内的HTLM的<table>
看起来像是:
<tr>
<td class="cart_product">
...
</td>
<td class="cart_description">
...
</td>
<td class="cart_price">
<p>₹<span>20</span></p>
</td>
<td class="cart_quantity">
<div class="cart_quantity_button">
<a class="cart_quantity_up" href="#"> + </a>
<input class="cart_quantity_input" type="text" name="quantity" value="8" autocomplete="off" size="2">
<a class="cart_quantity_down" href="#"> - </a>
</div>
</td>
<td class="cart_total">
<p class="cart_total_price"> ₹<span>160</span></p>
</td>
<td class="cart_delete">
...
</td>
</tr>
我只需要每个(cart_price>span>p)*(.cart_quantity_input.val())
的总和。
PS:alert($d.length);
只是在测试时检查tr没有,但我需要总和不计算
答案 0 :(得分:2)
您需要首先遍历每个tr然后找到值。
$array=$table.find('tr').each(function(){
var price = Number($(this).find('.cart_price>p>span').html());
var qty = Number($(this).find('.cart_quantity_input').val());
return price*qty;
}).toArray();
alert($array.length);
或计算总和:
total=0;
$table.find('tr').each(function(){
var price = Number($(this).find('.cart_price>p>span').html());
var qty = Number($(this).find('.cart_quantity_input').val());
total+= price*qty;
});
alert(total);
答案 1 :(得分:0)
假设$table
是您的表$table.each()
,只会在桌面上运行一次。
要为每个表行执行函数
$table.find('tr').each()
答案 2 :(得分:0)
您可以迭代表中的每个tr
并将值与
var sum = 0;
$table.find('tr').each(function () {
sum += ($(this).find('.cart_price > p > span').text() * $(this).find('.cart_quantity_input').val()) || 0;
});
alert(sum)
答案 3 :(得分:-1)
function getTotalPrice(){
var quantity =$('#cart_quantity_input').val();
var price= $('#cart_price').text();
var total = quantity * price;
alert(total);
}
尝试使用id这对我有用。