JavaScript循环不能正确计算/显示结果

时间:2012-09-13 09:42:04

标签: javascript json jquery

$(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,但我想添加总价格。

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

3 个答案:

答案 0 :(得分:2)

var total = 0取出循环。你在每次迭代时重置它。

答案 1 :(得分:1)

变量total的范围仅限于for循环,因此它将在此范围之外undefined。在循环之前初始化它

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

此外,根据您的评论,我假设您正在处理字符串,因此您需要使用parseInt来解析它们,然后再添加到总计中。

答案 2 :(得分: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);