0
$(document).ready(function () {

    //$('#customer_info #next_step').click(function() {

    $.getJSON("order/summary_process2.php?jsoncallback=?", function (data) {

        //loop through all items in the JSON array
        for (var x = 0; x < data.length; x++) {

            //create a container for each comment
            var div = $("<tr>").addClass("row").appendTo("#row");

            //add author name and comment to container
            $("<td>").addClass("space").text(data[x].item_name).appendTo(div);
            $("<td>").addClass("space").text(data[x].price).appendTo(div);
            $("<td>").addClass("space").text(data[x].qty).appendTo(div);
            $("<td>").addClass("space").text(data[x].tot_price).appendTo(div);
            //$("<div>").addClass("comment").text(data[x].comment).appendTo(div);

        }

        for (var i = 0; i < data.length; i++) {
            var total = 0;
            total = data[i].tot_price + total;
        }
        $("#total").html(total);

    });
});
//});
});

我正在使用JSON,但我想添加总价。

不幸的是,结果是错误的。

4

3 回答 3

2

退出var total = 0循环。您在每次迭代时都重置它。

于 2012-09-13T09:44:39.617 回答
1

变量的范围total仅限于for循环,因此它将undefined超出此范围。而是在循环之前对其进行初始化:

var total = 0;
for (var i=0; i < data.length; i++)
{
  total = parseInt(data[i].tot_price, 10) + total;
}

另外,根据您的评论,我假设您正在处理字符串,因此您需要parseInt在添加到总数之前使用来解析它们。

于 2012-09-13T09:44:46.940 回答
0

您应该在 for 循环范围之外声明您的总变量。在 for 循环范围内,它总是在每次迭代中将总重新分配为 0。

改变这个

for (var i=0; i < data.length; i++)
{
   var total = 0;
   total = data[i].tot_price + total;
}
$("#total").html(total);

var total = 0;
for (var i=0; i < data.length; i++)
{
    total += Number(data[i].tot_price);
}
$("#total").html(total);
于 2012-09-13T09:46:06.783 回答