//shopping-cart let cartIcon = document.querySelector('#cart-icon'); let cart = document.querySelector('.cart'); let closeCart = document.querySelector('#close-cart'); cartIcon.onclick = () =>{ cart.classList.add("active"); }; closeCart.onclick = () =>{ cart.classList.remove("active"); }; //-------------------- add/remove items from the cart -------------------- if (document.readyState == 'loading'){ document.addEventListener('DOMContentLoaded', ready); } else{ ready(); } function ready(){ //remove item from the cart var removeCartBtn = document.getElementsByClassName('cart-remove'); for(var i = 0; i < removeCartBtn.length; i++){ var button = removeCartBtn[i]; button.addEventListener('click', removeCartItem); } //quantity var quantityInput = document.getElementsByClassName('cart-quantity'); for(var i = 0; i < quantityInput.length; i++){ var input = quantityInput[i]; input.addEventListener('change', quantityChange); } //add cart var addCart = document.getElementsByClassName('add-cart'); for(var i = 0; i < addCart.length; i++){ var button = addCart[i]; button.addEventListener('click', addCartClick); } loadCartItems(); } //remove item function removeCartItem(event){ var buttonClicked = event.target; buttonClicked.parentElement.remove(); updateTotal(); saveCartItem(); } //quantity change function quantityChange(event){ var input = event.target; if(isNaN(input.value) || input.value <= 0){ input.value = 1; } updateTotal(); saveCartItem(); updateCartIcon(); } //add item to cart function addCartClick(event){ var button = event.target; var shopProduct = button.parentElement; var title = shopProduct.getElementsByClassName('product-title')[0].innerText; var price = shopProduct.getElementsByClassName('price')[0].innerText; var productImg = shopProduct.getElementsByClassName('product-img')[0].src; addProductToCart(title, price, productImg); updateTotal(); saveCartItem(); updateCartIcon(); } function addProductToCart(title, price, productImg){ var cartShopBox = document.createElement('div'); cartShopBox.classList.add('cart-box'); var cartItems = document.getElementsByClassName('cart-content')[0]; var cartItemName = cartItems.getElementsByClassName('cart-product-title'); for (var i = 0; i < cartItemName.length; i++){ if (cartItemName[i].innerText == title){ alert('You have already added this item to your cart'); return; } } var cartBoxContent = `
${title}
${price}
`; cartShopBox.innerHTML = cartBoxContent; cartItems.append(cartShopBox); cartShopBox.getElementsByClassName('cart-remove')[0].addEventListener('click', removeCartItem); cartShopBox.getElementsByClassName('cart-quantity')[0].addEventListener('change', quantityChange); saveCartItem(); updateCartIcon(); } //price total function updateTotal(){ var cartContent = document.getElementsByClassName('cart-content')[0]; var cartBoxes = cartContent.getElementsByClassName('cart-box'); var total =0; for(var i = 0; i < cartBoxes.length; i++){ var cartBox = cartBoxes[i]; var priceElement = cartBox.getElementsByClassName('cart-price')[0]; var quantityElement = cartBox.getElementsByClassName('cart-quantity')[0]; var price = parseFloat(priceElement.innerText.replace('$', '')) var quantity = quantityElement.value; total += price*quantity; } total = Math.round(total * 100)/100; document.getElementsByClassName('total-price')[0].innerText = '$' + total; //save total localStorage.setItem('cartTotal', total); } //item in cart function saveCartItem(){ var cartContent = document.getElementsByClassName('cart-content')[0]; var cartBoxes = cartContent.getElementsByClassName('cart-box'); var cartItems = []; for (var i = 0; i < cartBoxes.length; i++){ cartBox = cartBoxes[i]; var titleElement = cartBox.getElementsByClassName('cart-product-title')[0]; var priceElement = cart.getElementsByClassName('cart-price')[0]; var quantityElement = cartBox.getElementsByClassName('cart-quantity')[0]; var productImg = cartBox.getElementsByClassName('cart-img')[0].src; var item = { title: titleElement.innerText, price: priceElement.innerText, quantity: quantityElement.value, productImg: productImg, }; cartItems.push(item); } localStorage.setItem('cartItems', JSON.stringify(cartItems)); } //load in cart function loadCartItems(){ var cartItems = localStorage.getItem('cartItems'); if (cartItems){ cartItems = JSON.parse(cartItems); for (var i = 0; i < cartItems.length; i++){ var item = cartItems[i]; addProductToCart(item.title, item.price, item.productImg); var cartBoxes = document.getElementsByClassName('cart-box'); var cartBox = cartBoxes[cartBoxes.length - 1]; var quantityElement = cartBox.getElementsByClassName('cart-quantity')[0]; quantityElement.value = item.quantity; } } var cartTotal = localStorage.getItem('cartTotal'); if(cartTotal){ document.getElementsByClassName('total-price')[0].innerText = '$' + cartTotal; } updateCartIcon(); } //quantity in cart icon function updateCartIcon(){ var cartBoxes = document.getElementsByClassName('cart-box'); var quantity = 0; for (var i = 0; i < cartBoxes.length; i++){ var cartBox = cartBoxes[i]; var quantityElement = cartBox.getElementsByClassName('cart-quantity')[0]; quantity += parseInt(quantityElement.value); } var cartIcon = document.querySelector('#cart-icon'); cartIcon.setAttribute('data-quantity', quantity); } //clear cart after making a payment function clearCart(){ var cartContent = document.getElementsByClassName('cart-content')[0]; cartContent.innerHTML = ''; updateTotal(); localStorage.removeItem('cartItems'); }