Javascript 更新表中的总计

Javascript 更新表中的总计,javascript,jquery,html,Javascript,Jquery,Html,我有: 上述JW1501的数量不正确,为2,而不是3 产出: ... $('#product_totals tr').each(function (i3, v3) { console.log(v1, v2, v3) ... 对象{产品id:“JW1501”,尺寸id:“70A”,颜色id:“小豹纹", 数量:“2”} “JW1501” ​​JW1501​​​2.​​​79​​​158​​​ 为了实现您的目标,我已完全更改了您的printStock功能: Object

我有:

上述JW1501的数量不正确,为2,而不是3


产出:

...
$('#product_totals tr').each(function (i3, v3) {
            console.log(v1, v2, v3)
...
对象{产品id:“JW1501”,尺寸id:“70A”,颜色id:“小豹纹", 数量:“2”}
“JW1501”
​​JW1501​​​2.​​​79​​​158​​​

为了实现您的目标,我已完全更改了您的
printStock
功能:

Object {product_id: "JW1501", size_id: "70A", colour_id: "小豹纹", quantity: "2"}
"JW1501"
<tr data-id=​"1">​<td>​JW1501​</td>​<td class=​"code-quantity-total">​2​</td>​<td>​79.00​</td>​<td class=​"code-cost-total">​158.00​</td>​</tr>​
功能打印库(型号){
$(“#产品总计tr”)。每个(功能(){
var id=$(“td:eq(0)”,this.text().trim();
var-price=parseFloat($(“td:eq(2)”,this.text());
var计数=0;
$。每个(型号、功能(i、项目){
如果(item.product_id==id)计数+=(+item.quantity);
});
$(“td:eq(1)”,本)。文本(计数);
$((td:eq(3)”,this).text((count*price).toFixed(2));
});
变量行=$.map(模型、函数(项){
返回[
“+item.product\u id+”,
“+item.size\u id+”,
“+item.color\u id+”,
“”+项目数量+“”
].加入(“”);
});
var html=”“+行。连接(“”+“”);
$('stock#order tbody').html(html);
}
主要区别在于,我的代码按
产品id
模型中的项目进行分组,以便进一步计数


另请参阅我的。

当您在
控制台.log(v1,v2,v3)
中执行
$(“#product_totals tr”)。每个(函数(i3,v3)
打印模型的代码块
?@adilapapapaya请查看我的编辑。我认为这可能与
if(product#code==v2)有关
行…?它正在做一个
=
比较,而不是一个
包含
,因此它将只匹配一个实体,而不是所有变体。但是JW1501将始终如此,所有其他产品代码也是如此。(如果我理解正确的话)通过
产品id直接存储在模型中不是更容易吗(如果您以后不需要详细信息)?谢谢,我回家后会试一试,并相应地奖励赏金:)不幸的是,现在所有这一切似乎都是将总数量和价格设置为0。排序后,它只是将(item.product_id==id)更改为(item.product_code==id)是否会在12小时内奖励赏金。@imperium2335,那又怎样呢?)
...
$('#product_totals tr').each(function (i3, v3) {
            console.log(v1, v2, v3)
...
Object {product_id: "JW1501", size_id: "70A", colour_id: "小豹纹", quantity: "2"}
"JW1501"
<tr data-id=​"1">​<td>​JW1501​</td>​<td class=​"code-quantity-total">​2​</td>​<td>​79.00​</td>​<td class=​"code-cost-total">​158.00​</td>​</tr>​
function printStock(model) {

    $("#product_totals tr").each(function(){

        var id = $("td:eq(0)", this).text().trim();
        var price = parseFloat($("td:eq(2)", this).text());
        var count = 0;

        $.each(model, function(i, item){
            if (item.product_id == id) count += (+item.quantity);
        });

        $("td:eq(1)", this).text(count);
        $("td:eq(3)", this).text((count * price).toFixed(2));

    });

    var rows = $.map(model, function(item){
        return [
            "<td>" + item.product_id + "</td>",
            "<td>" + item.size_id + "</td>",
            "<td>" + item.colour_id + "</td>",
            "<td>" + item.quantity + "</td>"
        ].join("");
    });

    var html = "<tr>" + rows.join("</tr><tr>") + "</tr>";
    $('#stock_order tbody').html(html);
}