Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2018, 12:32   #1
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию Подскажите с кодом

День добрый, такая проблемка, добавляю данные в localStorage к объекту массива
Код:
cartData[itemId] = [itemTitle, itemFoto, itemСut, itemSistema, itemCon]
Объект itemId получаю из id+name
Код:
tkaneId = $('.calcimg').attr('id'); // ID ткани
	tkaneName = $('.block').attr('name');//name ткани
	itemId = tkaneId + tkaneName;//получаем объек из id ткани + имя ткани
В чём проблемка, в том, что если добавить два одинаковых заказа то добавляется последний т.к. itemId одинаковый. Вот думаю как сделать так чтобы он был разный? Сравнивать и добавлять например +1, но как реализовать?
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 23.07.2018, 13:01   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

после успешного оформления первого заказа просто очищайте переменную localStorage

P.S.
а вообще - вы не добавляете данные, а перезаписываете каждый раз, может все-же добавлять?

Код:
cartData.push([itemTitle, itemFoto, itemСut, itemSistema, itemCon, itemId]);
и вообще не очень понятно - зачем itemId.... когда id достаточно

Последний раз редактировалось ADSoft; 23.07.2018 в 13:05.
ADSoft вне форума Ответить с цитированием
Старый 23.07.2018, 14:00   #3
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

itemId пришлось сделать т.к. используются таблицы с товаром и id начинается с 1 т.е. если выбрать товар1 из таблицы 1 и товар1 из таблицы2 то id товаров будет одинаковый.
Почему использую такой вариант
Код:
cartData[itemId] = [itemTitle, itemFoto, itemСut, itemSistema, itemCon]
потому что при удалении товара из корзину обращаюсь к cartData[itemId] т.к. он по идее уникальный, ну должен быть)) остальные данные массива могут быть одинаковыми.
Цитата:
Сообщение от ADSoft Посмотреть сообщение
после успешного оформления первого заказа просто очищайте переменную localStorage
Если я очищу данные сохранятся?
Еду медленно, но верно!

Последний раз редактировалось spoon100500; 23.07.2018 в 14:05.
spoon100500 вне форума Ответить с цитированием
Старый 23.07.2018, 14:03   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

неправильный подход, товары должны быть в одной таблице
ADSoft вне форума Ответить с цитированием
Старый 23.07.2018, 14:06   #5
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Это я уже понял)) но переделывать гимор) либо сделать последовательный id в базе.
Товары выводятся циклом в таблице
Код:
// Получаем данные из LocalStorage
function getCartData(){return JSON.parse(localStorage.getItem('cart'));}
// Записываем данные в LocalStorage
function setCartData(o){localStorage.setItem('cart', JSON.stringify(o));
return false;};

function openCart(e){
	var cartData = getCartData(); // вытаскиваем все данные корзины
		totalItems = '';
	console.log(JSON.stringify(cartData));
	// если что-то в корзине уже есть, начинаем формировать данные для вывода
	if(cartData !== null){
		totalItems = '<table class="shopping_list table table-striped table-bordered table-hover table-sm text-center"><tr><th>Материал</th><th>Фото</th><th>Раскрой по:</th><th>Система</th><th>Управление</th><th>Ширина,см</th><th>Высота,см</th><th>Кол-во,шт</th><th>Цена,руб</th><th>Удалить</th></tr>';
		for(var items in cartData){
			totalItems += '<tr class="jqcart-tr">';
				totalItems += '<td class="pt-4">' + cartData[items][0] + '</td>';//Материал
				totalItems += '<td><img src=" '+ cartData[items][1] +'" width="100px"></td>';//Фото
				totalItems += '<td class="pt-5">' + cartData[items][2] + '</td>';//Раскрой
				totalItems += '<td class="pt-5">' + cartData[items][3] + '</td>';//Система
				totalItems += '<td class="pt-5">' + cartData[items][4] + '</td>';//Управление
				totalItems += '<td class="pt-5">' + cartData[items][5] + '</td>';//Ширина
				totalItems += '<td class="pt-5">' + cartData[items][6] + '</td>';//Высота
				totalItems += '<td class="pt-5">' + cartData[items][7] + '</td>';//Кол-во
				totalItems += '<td class="pt-5">' + cartData[items][8] + '</td>';//Цена
				totalItems += '<td class="pt-4"><img class="deleteBusOut"></td>';
			totalItems += '</tr>';
		}
		totalItems += '<table>';
		cartCont = totalItems;
	} 
	else {cartCont = 'В корзине пусто!';}
	$('.table').html(cartCont);
	return false;
};
Как их очищать?
Еду медленно, но верно!

Последний раз редактировалось spoon100500; 23.07.2018 в 14:15.
spoon100500 вне форума Ответить с цитированием
Старый 24.07.2018, 06:05   #6
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Возник ещё вопрос, товары формируются в виде таблице, как видно из предыдущего поста, каждая строка имеет один и тот же класс jqcart-tr, каких либо уникальных значений нет.
В каждой строке количество товара можно прибавлять или убавлять
Код:
$(document).on('click', '.minustab', function () { //колличество изделий -
    var input = $('.jqcart-amount').parent().find('input');
    var count = parseInt(input.val()) - 1;
    count = count < 1 ? 1 : count;
    input.val(count);
    input.change();
	recalcSum();
 });
$(document).on('click', '.plustab', function () {//колличество изделий +
    var input = $('.jqcart-amount').parent().find('input');
    input.val(parseInt(input.val()) + 1);
    input.change();
	recalcSum();
 });
function recalcSum(){	
	var cartData = getCartData();
	for(var items in cartData){
	raskroiTovar = cartData[items][2];//раскрой
	widthTovar = cartData[items][5];//ширина
	heightTovar = cartData[items][6];//высота
	praicrez = cartData[items][10];//стоимость за изделие
	}
	if(raskroiTovar=="высоте"){itogTovar = heightTovar}
	if(raskroiTovar=="ширине"){itogTovar = widthTovar}
	colTovar = $('.jqcart-amount').val();//кол-во товара
	recSum = ((praicrez * itogTovar * colTovar)/100).toFixed(2).replace(".", ",");//Итого
	$('.itogSum').html(recSum);
};
Вопрос такой, как сделать так, чтобы это работало только в определенной строке, а то сейчас количество и стоимость меняется везде в таблице.
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 24.07.2018, 10:04   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

думаю, что через this
(смотрите, что передаётся в обработчик) и его передавайте в recalcSum
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите с индуским кодом) spoon100500 PHP 31 13.07.2018 16:22
Подскажите с кодом, плиз! spoon100500 JavaScript, Ajax 25 16.10.2016 14:27
. Подскажите пожалуйста как исправить ошибку с кодом 18. abatfarda PHP 18 30.03.2015 00:04
Подскажите, что не так с кодом Grisha248 Помощь студентам 2 24.05.2009 16:41
Подскажите с кодом процедуры ButtonClick KARUSHEV Помощь студентам 3 23.03.2009 14:01