#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть массив, в котором хранятся объекты товаров, я сохраняю сведения о продукте в хранилище сеанса, а затем получаю сведения и использую эти параметры для моей функции добавления в корзину, но вместо добавления товаров она заменяет последний элемент в массиве новым.
Если я вызываю функцию добавления в корзину изолированно и задаю ей параметры, она работает нормально, но как только я вызываю ее из другой функции, она не добавляет, а заменяет элементы в корзине
Это моя функция добавления в корзину
//add item to cart
function addToCart(name, type, price, size, count){
for(var i in cart){
if(cart[i].name === name){
cart[i].count = count;
return;
}
}
var product = new Product(name, type, price, size, count);
cart.push(product);
saveCart();
}
И функция, которая вызывает add to Cart
//set up for add to cart function
function cartSetUp(){
var name = sessionStorage.getItem("product name");
var price = JSON.parse(sessionStorage.getItem("product price"));
var type = sessionStorage.getItem("product type");
var image = sessionStorage.getItem("product image");
var count = $("#product-quantity").val();
var size = $('input[name=size]:checked').val();
addToCart(name, type, price, size, count)
}
Комментарии:
1. Что такое
saveCart()
? Когда вы пошагово просматриваете код в своем отладчике, где конкретно возникает проблема?2. вы должны взять объект cart obj из сеанса и перейти в функцию add cart, только тогда он сможет добавить существующую корзину
3. @David save cart() сохраняет корзину в локальном хранилище
4.
function saveCart(){ localStorage.setItem("shopping cart", JSON.stringify(cart)); }
5. Я полагаю, что проблема кроется в коде, который вы не предоставили. Попробуйте добавить команду
console.log(cart)
beforecart.push(product)
, а также сразу после загрузки корзины из локального хранилища. Я подозреваю, что вы иногда теряете последний элемент в своей корзине между загрузкой корзины из localStorage и добавлением туда нового продукта