Доброй ночи. Так уж получилось, что мне необходимо написать интернет-магазин, и я застрял на моменте написания логики для корзины, которая довольно проста, на первый взгляд: нажимаем на кнопку под нужным товаром, его данные (data-name, data-price, etc) записываются в объект, который, в свою очередь, записывается в массив shoppingCart, и хранится в localStorage. Т.е. при добавлении различных товаров они просто в виде объектов записываются в массив. Если все производить с одной страницы - проблемы не возникает, но сайт, по задумке, является многостраничным, и вот как раз когда я нажимаю "Добавить товар" с другой страницы, то массив в localStorage переписывается, т.е. ранее добавленные данные с других страниц удаляются. Собственно, был бы рад услышать мысли по этому поводу. Спасибо. Объект корзины и его методы:
var shoppingCart = {};
shoppingCart.cart = [];
shoppingCart.Item = function(name, price, count, category, image) {
this.name = name;
this.price = price;
this.count = count;
this.category = category;
this.image = image;
};
shoppingCart.addItemToCart = function (name, price, count, category, image) {
for (let i = 0; i < this.cart.length; i++) {
if (this.cart[i].name === name) {
this.cart[i].count += count;
this.saveCart();
return;
}
}
var item = new this.Item(name, price, count, category, image);
this.cart.push(item);
this.saveCart();
};
shoppingCart.saveCart = function () {
window.localStorage.setItem('shoppingCart', JSON.stringify(this.cart));
};
shoppingCart.loadCart = function () {
this.cart = JSON.parse(localStorage.getItem('shoppingCart'));
};
jQuery:
$(".article-to-basket").click(function() {
let name = $(this).attr("data-name");
let price = $(this).attr("data-price");
let category = $(this).attr("data-category");
let image = $(this).attr("data-image");
shoppingCart.addItemToCart(name, price, 1, category, image);
});
Сборка персонального компьютера от Artline: умный выбор для современных пользователей