2016-10-04 2 views
1

私は新しい価格を得るたびに、次が起こることになっている変数の更新データます: totalprice = totalprice +カートを[i]は例えばtotalpriceが以前500とした場合新しい価格は800、総額は(500 + 800 +)、現在は(500 + 500 + 800)です。なぜこれが起こるのですか?セッションは二度

exports.add = function(req, res) { 
    var cart = req.body.cart; 
    console.log('frome node..adding checkcart.js'); 
    console.log("Session Initialized!!"); 
    for(var i = 0 ; i < cart.length ; i++) { 
     totalprice = cart[i].price + totalprice; 
     console.log('Current Price: '+cart[i].price); 
    } 
    req.session.cart = cart; 
    console.log(cart); 
    console.log('total: ' + totalprice); 
    //req.session.totalprice = totalprice; 
    json_responses = { 
     "totalprice": req.session.totalprice 
    } 
    res.send(json_responses); 
}; 
+0

は、例えば –

+0

フロームnode..adding checkcart.js としてコンソールログを追加[{UID: 'lenvyga'、製品 'レノボヨガ'、価格:800}] セッション初期化! 現在の価格:800 合計:800 POST/addtocart 200の117.127 MS - 2 フロームのnode..addingのcheckcart.js [{UID: 'lenvyga'、製品 'レノボヨガ'、価格:800}、{ uid: 'macbpr'、製品: 'MacBook Pro'、価格:1200}] セッションが初期化されました! 現在の価格:800 現在の価格:1200 合計:2800 – jack

+0

どこに問題がありますか? まず、総額は0です。コンソールログに記載されているように、800を追加すると800に変更されます。次に、さらに2つの(1)800と(2)1200を追加します。したがって、合計価格(現在は800)をとり、価格(1)と(2)を追加します。これは800 + 1200 + 800を2800としています。つまり、正確には(コンソールログに基づいて)取得したものです。 –

答えて

0

これは多くの回答の1つです。既に追加された項目の数をカウントする変数を作成することをお勧めします。それ以外の場合、forループは何度も繰り返しカウントし続けます。あなたの質問にはたくさんのコードがないので、2つのオプションが追加されます。

オプション1

ユーザーは追加機能が呼び出される項目を追加するたびに。このオプションのためには、最後にを追加して総額計算に追加するだけです。だから、代わりにあなたのコードで:

for(var i = 0 ; i < cart.length ; i++) { 
    totalprice = cart[i].price + totalprice; 
    console.log('Current Price: '+cart[i].price); 
} 

使用:このオプションは、ユーザーが多くの項目を追加することができたときのためのものであり、価格は一度計算されている2

totalprice = cart[cart.length-1].price + totalprice; 

オプションユーザーはaddメソッドを呼び出すボタンをクリックします。これはやや難解です。すでに計算されたアイテムを数えるカウンタを追加する必要があります。だからコード:

var counter = 0; 
exports.add = function(req, res) { 
    var cart = req.body.cart; 
    var prevCounter = counter; 
    counter = req.body.cart.length - counter; // items added in the session 
    console.log('frome node..adding checkcart.js'); 
    console.log("Session Initialized!!"); 
    for(var i = prevCounter ; i < counter ; i++) { 
     totalprice = cart[i].price + totalprice; 
     console.log('Current Price: ' + cart[i].price); 
    } 
    req.session.cart = cart; 
    console.log(cart); 
    console.log('total: ' + totalprice); 
    //req.session.totalprice = totalprice; 
    json_responses = { 
     "totalprice": req.session.totalprice 
    } 
    res.send(json_responses); 
}; 

幸運!

関連する問題