Advertisement
Todorov_Stanimir

07. Shopping Cart Exercise: DOM

Oct 8th, 2019
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.    const addButtons = Array.from(document.getElementsByClassName('add-product'));
  3.    const checkoutButton = document.querySelector('.checkout');
  4.  
  5.    const products = {
  6.       totalPrice: 0,
  7.       boughtProd: []
  8.    }
  9.  
  10.    const getProductInfo = (product) => {
  11.       const nameProduct = product.querySelector('.product-title').textContent;
  12.       const priceProduct = Number(product.querySelector('.product-line-price').textContent);
  13.       return [nameProduct, priceProduct];
  14.    }
  15.  
  16.    const addProductToShoppingCart = ([nameProduct, priceProduct]) => {
  17.       products.totalPrice += priceProduct;
  18.       products.boughtProd.push(nameProduct);
  19.       addInfoToTextArea(`Added ${nameProduct} for ${priceProduct.toFixed(2)} to the cart.\n`);
  20.    }
  21.  
  22.    const addInfoToTextArea = (info) => { document.querySelector('textarea').value += info };
  23.  
  24.    const disableAllButtons = () => { [...addButtons, checkoutButton].map(el => el.disabled = true) }
  25.  
  26.    const addProduct = (ev) => { addProductToShoppingCart((getProductInfo(ev.target.parentNode.parentNode))) };
  27.  
  28.    const finishBuyingProcess = () => {
  29.       addInfoToTextArea(`You bought ${[...new Set(products.boughtProd)].join(', ')} for ${products.totalPrice.toFixed(2)}.`);
  30.       disableAllButtons();
  31.    }
  32.  
  33.    addButtons.map(el => el.addEventListener('click', addProduct));
  34.    checkoutButton.addEventListener('click', finishBuyingProcess);
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement