2012-09-13 96 views
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,但我想要添加總價。JavaScript循環不能正確計算/顯示結果

不幸的是,結果是錯誤的。

+3

誰是賈森... – kieran

回答

2

var total = 0退出循環。每次迭代都會重置它。

+0

請解釋一下.. bcoz如果我定義了循環的答案不正確歌廳 –

1

變量total的範圍限於for循環,因此它將在此範圍之外的undefined。前初始化它循環,而不是:

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

此外,並根據您的意見,我假設你正在處理字符串,所以你需要使用parseInt增加了總前對其進行解析。

+0

答案是錯的:1703251500 –

+0

@ user1668178:您可能正在處理字符串而不是整數。使用'parseInt()'。 –

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); 
+0

不能正常顯示的答案是0150325170 ...實際上,我想要這個0150 + 325 + 170 –

+0

確定然後將您的值轉換爲數字,如'total + = Number(data [i] .tot_price);' –

+0

@ user1668178, tot_price作爲文本,因此在將其添加到總變量之前將其轉換爲數字。 –