Показать сообщение отдельно
  #9 (permalink)  
Старый 10.07.2019, 11:36
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Ленча
не нашлась ошибка - не люблю оставлять за спиной невыясненные косяки(
Так я же вам написал, что вы где-то потеряли вызов finalprice!

Точней там, где у вас происходит обработка события нажатия на кнопку Заказать! Там где обработчик нажатия на $("#price .uk-button-primary") у вас прописано 2 раза finalprice... перенесите их в конец функции перед return false... Но это не понимаете! Поэтому вот код...
$("#price .uk-button-primary").each(function() {
			$(this).removeAttr("uk-scroll");
		}).click(function(event) {
			event.preventDefault();
			$(this).addClass('selected');
			//первым делом по клику обнуляем все переменные
			check = 'norecord';

			//забираем название товара и цену
			title = $.trim($(this).closest('.el-item').find('h4').text());
			price = $(this).closest('.el-item').find('.el-meta').text().replace(/\D+/g, "");
			img = $(this).closest('.el-item').find('img').attr('src');

			//если в корзине уже что-то есть
			if ($(".cart .product").children('.item').length > 0) {
				//для каждой строки в корзине
				$('.cart .product .item').each(function() {
					//находим текущий тайтл элемента
					currenttitle = $(this).find('.itemname').text();
					//сравниваем текущи с тем, что кликнут(title)
					//если они совпадают - меняем количество и цену итема
					if (currenttitle === title) {
						//делаем заметку, что такой итем уже есть
						check = "yesrecord";
						//получаем значение количества
						$input = $(this).find('.incount');
						incount = +$input.val();
						//прибавляем еще одну штуку
						countfin = incount + 1;
						//устанавливаем новое значение кол-ва
						$input.val(countfin);
						$input.change();
						//устанавливаем новое значение стоимости итема
						innerprice = price * countfin;
						//заносим новое значение стоимости в блок
						$(this).find('.price').text(innerprice);
					}
				});
			}

			//если записи с таким тайтлом нет или вообще нифига нет
			if ((check === "norecord") || ($(".cart .product").children('.item').length <= 0)) {
				//добавляем запись
				$('<div class="item">' + //'<img src="' + img + '" />' +
				'<span class="itemname">' + title + '</span>' + '<span class="minus">-</span>' + '<input class="incount" value ="1">' + '<span class="plus">+</span>' + '<span class="price">' + price + '</span>' + '<span class="delete">X</span>' + '<span class="hiddenprice">' + price + '</span>' + '</div>').appendTo($(".cart .product"));

				if (number != 'yesfinal') {
					$(".product").after("<div class='finalprice'>Итого: <span>" + price + "  </span>руб</div>");
					number = 'yesfinal';
				}
			}
			//пересчет итога
			finalprice();
			return false;
		});


Сообщение от Ленча
А что даст задержка в 500?
Оно показало, что вы где-то пропустили finalprice (за 500 мс можно ведь заметить, что итоговая цена вычисляется не сразу при нажатии, а позже, через 500мс, значит где-то не хватает finalprice)

Сообщение от Ленча
Буду переписывать все под куки, раз не получилось с хранилищем.
Всего-то поменять две строчки! И понять, что оно точно также не сохраняет последнее, потому что это не зависит от хранилища! Вы читать умеете? У. ВАС. ПРОПУЩЕН. ВЫЗОВ. FINALPRICE.

Сообщение от Ленча
Жалко, что не нашлась ошибка - не люблю оставлять за спиной невыясненные косяки(
Вам уже указали причину! Вот сейчас даже показали решение с кодом...

Сообщение от Ленча
Жалко, что не нашлась ошибка
Читай что тебе пишут! Вы даже не пытались найти, где у вас пропущен этот вызов!

Они нам говорили jQuery упрощает разработку... а тут тако-о-е!!!

Последний раз редактировалось Malleys, 10.07.2019 в 11:52.
Ответить с цитированием