本地存储更新购物车总计

时间:2019-06-10 17:28:42

标签: local-storage cart shopping-cart subtotal

我希望仅将购物车小计存储在本地存储中。我正在使用GTM调用添加到购物车事件,并获取已添加到购物车的价格。在这里,我只想更新该价格或创建每次添加其他商品时都会更新的购物车值。一旦弄清楚了add函数,当移除某些内容或更新数量时,我可以轻松地填补空白。

// this is the GTM call to track what the price is when the add to cart button is pushed
var pr = {{DL - Add To Cart}};

// Store product price in localStorage
localStorage.setItem('price', pr.price);

上面我没有问题。我得到每次添加项目时要显示的价格。下面是我正在使用的代码,用于在添加每个额外价格时更新价格。我要解决的主要问题是,我已经使购物车在{[]}中显示的内容过于复杂,而我希望它像上面的代码(“ price”,pr.price)所示的那样简单地显示

var addItem = function (price) {
    var oldItems = JSON.parse(localStorage.getItem('cartvalue')) || [] ;
    var match = oldItems.find(function (item) {
        return item['price'] = price;
    });
    if (match) {
        match['price'] += price;
    } else {
        var newItem = {
            'price': price,
        };
        oldItems.push(newItem);
    }
    localStorage.setItem('cartvalue', JSON.stringify(oldItems));
};

 addItem(pr.price);

1 个答案:

答案 0 :(得分:0)

这是我终于可以做的工作。现在,这仅以数字显示购物车的值,而不是{[“ price”:xx.xx]}

<script>
 var pr = {{DL - Add To Cart}};

localStorage.setItem('price', pr.price);
localStorage.setItem('qty', pr.quantity); 

var addItem = function (price, qty) {
    var currentTotal = localStorage.getItem('cartvalue');
    if(currentTotal)
        currentTotal = parseFloat(currentTotal) + (parseFloat(price) * parseFloat(qty));
    else
        currentTotal = parseFloat(price) * parseFloat(qty);
    localStorage.setItem('cartvalue', currentTotal);
};

 addItem(pr.price, pr.quantity);

</script>