我希望仅将购物车小计存储在本地存储中。我正在使用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);
答案 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>