Мини корзина из LocalStorage

#1

не могу найти общие сумму всех ключей в ассоциативном массивве.

function showMiniCart(){
//показываю содержимое корзины
var out =’’;
for (var w in cart){
out += cart[w]; /*- таким образом я показываю количество ключей (каждого по отдельности). */
}
$(’#mini-cart’).html(out);

// ( Object.keys( cart ).length ); - совсем не то, просто длину обьекта показывает, не прибавляет.

что только я не перепробывал, не получается. Как можно ещё попробывать - ВЫВОДИТЬ В МИНИ-КОРЗИНУ общие количество товара:

апельсинов - 5;
телевизоров - 5;
обувь - 5;
    (мини-корзина) ИТОГО: 15.
0 Likes

#2

Не зная какой именно объект в cart невозможно подсказать что не так. Покажи какие данные в переменной cart.

0 Likes

#3

файл json.

ЭТО ВЕСЬ КОД :

var cart = {}; //моя корзина

$(‘document’).ready(function(){
loadGoods();
checkCart();
showMiniCart();
});

function loadGoods() {
//загружаю товары на страницу
$.getJSON(‘goods.json’, function (data) {
//console.log(data);
var out = ‘’;
for (var key in data){
out+=’

’;
out+=’

’+data[key][‘name’]+’

’;
out+=‘

Цена: ‘+data[key][‘cost’]+’

’;
out+=’’;
out+=‘Купить’;
out+=’
’;
}
$(’#goods’).html(out);
$(‘button.add-to-cart’).on(‘click’, addToCart);
});
}

function addToCart() {
//добавляем товар в корзину
var articul = $(this).attr(‘data-art’);
if (cart[articul]!=undefined) {
cart[articul]++;
}
else {
cart[articul] = 1;
}
localStorage.setItem(‘cart’, JSON.stringify(cart) );
//console.log(cart);
showMiniCart();
}

function checkCart(){
//проверяю наличие корзины в localStorage;
if ( localStorage.getItem(‘cart’) != null) {
cart = JSON.parse (localStorage.getItem(‘cart’));
}
}

function showMiniCart(){
//показываю содержимое корзины
var out =’’;
for (var w in cart){
out += w + ’ — ‘+cart[w]+’
’;
}

$('#mini-cart').html(out);

}

0 Likes

#4

Я верно понимаю что в cart под ключом-идентификатором товара хранится количество купленных товаров. А в data под ключом-идентификатором товара среди прочего хранится цена товара. И задача - показать сумму покупки?

0 Likes

#5

в data хранятся id товара.

в cart хранится содержимое из localStorage (то-есть уже добавленые в корзину товары).

потом я получаю из lokalStorage количество товаров для вывода. но получается только по отдельности каждый товар. а общие их количество не могу вывести.

получается так:
картошка - 1шт.
помидор - 1шт.
апельсин - 1шт.

А надо так:
товаров - 3шт.

0 Likes

#6

Нужно аккумулировать сумму так же как ты делал это со строкой. Только собирать сумму.

function showMiniCart() {
        var totalCount = 0
	for (var w in cart) {
		totalCount += cart[w]
	}
	$('#mini-cart').text('Товаров - ' + totalCount);
}

Посмотри тут как форматировать на форуме код чтобы он подсвечивался и подсвечивай его в следующих комментариях. Так намного проще разбираться с кодом, а это повышает твои шансы получить ответ.

1 Like

#7

получилось. спасибо. дайте свой номер, я вам на баланс 100р кину.

0 Likes

#8

Спасибо. Меня можно поддержать через
paypal
podgorniyd@gmail.com

и patreon

0 Likes