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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2021, 00:09   #1
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию Корзина JS

Здравствуйте ,есть такой фрагмент кода,это так званые карточки товара,как для подобного рода карточек,можно сделать добавление в корзину,и как сделать чтобы "то что было добавлено в корзину " выводилось на отдельной странице,при нажатии кнопки по типу "Корзина",
Код:
<div class="container">
        <div class="row">
            <div class="col-md-3 col-sm-6">
                <div class="product-grid">
                    <div class="product-image">
                        <a href="#">
                            <img class="pic-1" src="image/Futzalki/Joma Top.jpg">
                            <img class="pic-2" src="image/Futzalki/Joma Top.jpg">
                        </a>
                        
                        <ul class="social">
                            <li><a href="#" data-tip="Купить"><i class="fas fa-shopping-cart"></i></a></li>
                        </ul>
                    </div>
                    <div class="product-content">
                        <h3 class="title"><a href="#">Футзалки Joma TOP FLEX 2101 INDOOR</a></h3>
                        <div class="price">1125грн </div>
                    </div>
                </div>
            </div>
            <div class="col-md-3 col-sm-6">
                <div class="product-grid">
                    <div class="product-image">
                        <a href="#">
                            <img class="pic-1" src="image/Futzalki/nike legend 9.jpg">
                            <img class="pic-2" src="image/Futzalki/nike legend 9.jpg">
                        </a>
                        <span class="product-trend-label">Скидка</span>
                        
                        <ul class="social">
                            <li><a href="#" data-tip="Купить"><i class="fas fa-shopping-cart"></i></a></li>
                        </ul>
                    </div>
                    <div class="product-content">
                        <h3 class="title"><a href="#">Футзалки Nike LEGEND 9 ACADEMY IC</a></h3>
                        <div class="price discount"><span>2361 грн.</span> 1770 грн.</div>
                    </div>
                </div>
            </div>
То что пытался делать я:
Код:
<div class="container">
        <div class="row">
            <div class="col-md-3 col-sm-6">
                <div class="product-grid">
                    <div class="product-image">
                        <a href="#">
                            <img class="pic-1" src="image/Futzalki/Joma Top.jpg">
                            <img class="pic-2" src="image/Futzalki/Joma Top.jpg">
                        </a>
                        
                        <ul class="social">
                            <li><a href="#" data-tip="Купить"><i class="fas fa-shopping-cart"></i></a></li>
                        </ul>
                    </div>
                    <div class="product-content">
                        <h3 class="title"><a href="#">Футзалки Joma TOP FLEX 2101 INDOOR</a></h3>
                        <div class="price">1125грн </div>
                    </div>
                </div>
            </div>
            <div class="col-md-3 col-sm-6">
                <div class="product-grid">
                    <div class="product-image">
                        <a href="#">
                            <img class="pic-1" src="image/Futzalki/nike legend 9.jpg">
                            <img class="pic-2" src="image/Futzalki/nike legend 9.jpg">
                        </a>
                        <span class="product-trend-label">Скидка</span>
                        
                        <ul class="social">
                            <li><a href="#" data-tip="Купить"><i class="fas fa-shopping-cart"></i></a></li>
                        </ul>
                    </div>
                    <div class="product-content">
                        <h3 class="title"><a href="#">Футзалки Nike LEGEND 9 ACADEMY IC</a></h3>
                        <div class="price discount"><span>2361 грн.</span> 1770 грн.</div>
                    </div>
                </div>
            </div>
Код:
var d = document,
    itemBox = d.querySelectorAll('.product-grid'), // блок каждого товара
		cartCont = d.getElementById('cart_content'); // блок вывода данных корзины
// Функция кроссбраузерная установка обработчика событий
function addEvent(elem, type, handler){
  if(elem.addEventListener){
    elem.addEventListener(type, handler, false);
  } else {
    elem.attachEvent('on'+type, function(){ handler.call( elem ); });
  }
  return false;
}
// Получаем данные из LocalStorage
function getCartData(){
	return JSON.parse(localStorage.getItem('cart'));
}
// Записываем данные в LocalStorage
function setCartData(o){
	localStorage.setItem('cart', JSON.stringify(o));
	return false;
}
// Добавляем товар в корзину
function addToCart(e){
	this.disabled = true; // блокируем кнопку на время операции с корзиной
	var cartData = getCartData() || {}, // получаем данные корзины или создаём новый объект, если данных еще нет
			parentBox = this.parentNode, // родительский элемент кнопки &quot;Добавить в корзину&quot;
			itemId = this.getAttribute('data-id'), // ID товара
			itemTitle = parentBox.querySelector('.title').innerHTML, // название товара
			itemPrice = parentBox.querySelector('.price').innerHTML; // стоимость товара
	if(cartData.hasOwnProperty(itemId)){ // если такой товар уже в корзине, то добавляем +1 к его количеству
		cartData[itemId][2] += 1;
	} else { // если товара в корзине еще нет, то добавляем в объект
		cartData[itemId] = [itemTitle, itemPrice, 1];
	}
	// Обновляем данные в LocalStorage
	if(!setCartData(cartData)){ 
		this.disabled = false; // разблокируем кнопку после обновления LS
		cartCont.innerHTML = 'Товар добавлен в корзину.';
		setTimeout(function(){
			cartCont.innerHTML = 'Продолжить покупки...';
		}, 1000);
	}
	return false;
}
// Устанавливаем обработчик события на каждую кнопку &quot;Добавить в корзину&quot;
for(var i = 0; i < itemBox.length; i++){
	addEvent(itemBox[i].querySelector('.add_item'), 'click', addToCart);
}
// Открываем корзину со списком добавленных товаров
function openCart(e){
	
	var cartData = getCartData(), // вытаскиваем все данные корзины
			totalItems = '';
	console.log(JSON.stringify(cartData));
	// если что-то в корзине уже есть, начинаем формировать данные для вывода
	if(cartData !== null){
		totalItems = '<table class="shopping_list"><tr><th>Наименование</th><th>Цена</th><th>Кол-во</th></tr>';
		for(var items in cartData){
			totalItems += '<tr>';
			for(var i = 0; i < cartData[items].length; i++){
				totalItems += '<td>' + cartData[items][i] + '</td>';
			}
			totalItems += '</tr>';
		}
		totalItems += '<table>';
		cartCont.innerHTML = totalItems;
	} else {
		// если в корзине пусто, то сигнализируем об этом
		cartCont.innerHTML = 'В корзине пусто!';
	}
	return false;
}
/* Открыть корзину */
addEvent(d.getElementById('checkout'), 'click', openCart);
/* Очистить корзину */
addEvent(d.getElementById('clear_cart'), 'click', function(e){
	localStorage.removeItem('cart');
	cartCont.innerHTML = 'Корзина очишена.';	
});
nonameii3ii вне форума Ответить с цитированием
Старый 13.12.2021, 08:06   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Цитата:
// Устанавливаем обработчик события на каждую кнопку &quot;Добавить в корзину&quot;
for(var i = 0; i < itemBox.length; i++){
addEvent(itemBox[i].querySelector('.add_item'), 'click', addToCart);
}
че так сложно то... зачем столько обработчиков, одного достаточно
Код:
// Устанавливаем обработчик события на каждую кнопку &quot;Добавить в корзину&quot;
	addEvent(documents.querySelector('.add_item'), 'click', addToCart);
по вопросу: в чем сложность?
делаете ссылку например /cart
при открытии ее - отрисовываете что и как нужно.... у вас уже похожая функция есть - которая состав корзины рисует... тут то-же самое, только на конкретной странице... + оформление наверное другое
ADSoft вне форума Ответить с цитированием
Старый 13.12.2021, 11:49   #3
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию

В этом и состоит вопрос,как можно сделать чтобы при нажатии на кнопку на одной странице,выдавалось сообщение,товар добавлен в корзину,а сама корзина была на другой странице,не очень пойму...
nonameii3ii вне форума Ответить с цитированием
Старый 13.12.2021, 14:26   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

просто страницу пустую можете вывести? я ж не знаю чего у вас там и как...
ADSoft вне форума Ответить с цитированием
Старый 13.12.2021, 16:14   #5
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию

Нет страницу с корзиной,в которой будут выдаваться те товары ,на которые нажали купить
nonameii3ii вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Корзина на рhp Natysya PHP 5 30.05.2011 10:59
Корзина покупок Gena91 Microsoft Office Excel 0 22.02.2011 11:52
Корзина с галлюцинациями Alex Cones Операционные системы общие вопросы 14 02.10.2009 10:30
КОрзина Lostoffuture PHP 2 29.07.2008 08:58
КорзиНА vizor9 Свободное общение 0 04.01.2008 19:00