easyCart on JS
by ddrraaggaa
HTML
<div class="item_box">
<h3 class="item_title">Samsung Galaxy S10</h3>
<p>Цена: <span class="item_price">20</span>$</p>
<button class="add_item" data-id="7">Добавить в корзину</button>
</div>
<div class="item_box">
<h3 class="item_title">LG Optimus G E100500</h3>
<p>Цена: <span class="item_price">100</span>$</p>
<button class="add_item" data-id="2">Добавить в корзину</button>
</div>
<div class="item_box">
<h3 class="item_title">Nokia 2110</h3>
<p>Цена: <span class="item_price">1000</span>$</p>
<button class="add_item" data-id="5">Добавить в корзину</button>
</div>
<button id="checkout">Оформить заказ</button>
<button id="clear_cart">Очистить корзину</button>
<div id="cart_content"></div>
JavaScript
localStorage.clear();
var d = document,
itemBox = d.querySelectorAll('.item_box'), // блок каждого товара
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, // родительский элемент кнопки "Добавить в корзину"
itemId = this.getAttribute('data-id'), // ID товара
itemTitle = parentBox.querySelector('.item_title').innerHTML, // название товара
itemPrice = parentBox.querySelector('.item_price').innerHTML; // стоимость товара
if(cartData.hasOwnProperty(itemId)){ // если такой товар уже в корзине, то добавляем +1 к его количеству
cartData[itemId][2] += 1;
} else { // если товара в корзине еще нет, то добавляем в объект
cartData[itemId] = [itemTitle, itemPrice, 1];
}
if(!setCartData(cartData)){ // Обновляем данные в LocalStorage
this.disabled = false; // разблокируем кнопку после обновления LS
}
return false;
}
// удаляем товар
function deleteItem() {
var id = this.parentNode.parentNode.getAttribute('data-id');
console.log(id);
var cartData = getCartData() || {}; // получаем список товаров
delete cartData[id]; // удаляем товар
setCartData(cartData); // отправляем изменения в localStorage
...