Advertisement
dimoBs

Furniture Store

Sep 12th, 2021
800
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.  
  3.     let totalPrice = 0;
  4.     let inputs = document.querySelectorAll('input');
  5.     let model = inputs[0];
  6.     let year = inputs[1];
  7.     let price = inputs[2];
  8.     let description = document.querySelector('textarea');
  9.     let btnAdd = document.querySelector('button');
  10.     btnAdd.addEventListener('click', onAdd);
  11.  
  12.     function onAdd(ev) {
  13.         ev.preventDefault();
  14.  
  15.         if (model.value == "" || description.value == "" || year.value < 0 || price.value < 0) {
  16.             return;
  17.         }
  18.  
  19.         const total = document.querySelector('.total-price');
  20.         let prc = parseFloat(price.value).toFixed(2);
  21.         let list = document.querySelector('tbody');
  22.  
  23.         const tr = creatElement('tr', undefined, 'info');
  24.         const tdModel = creatElement('td', `${model.value}`);
  25.         const tdPrice = creatElement('td', prc)
  26.         const tdBtns = creatElement('td');
  27.         const btnMore = creatElement('button', 'More Info', 'moreBtn');
  28.         const btnBuy = creatElement('button', 'Buy it', 'buyBtn');
  29.         btnMore.addEventListener('click', () => {
  30.             if (btnMore.textContent == 'More Info') {
  31.                 btnMore.textContent = 'Less Info'
  32.                 trHide.style.display = 'contents'
  33.             } else {
  34.                 btnMore.textContent = 'More Info'
  35.                 trHide.style.display = 'none'
  36.             }
  37.         });
  38.  
  39.         btnBuy.addEventListener('click', (ev) => {
  40.             let curr = ev.target.parentNode.parentNode;
  41.             let priceCurrent = Number(curr.querySelectorAll('td')[1].textContent);
  42.             totalPrice += priceCurrent;
  43.             curr.remove()
  44.             total.textContent = totalPrice.toFixed(2);
  45.         });
  46.  
  47.         const trHide = creatElement('tr', undefined, 'hide');
  48.         const tdHide = creatElement('td', `Year: ${year.value}`);
  49.         const tdhideColSpan = creatElement('td', `Description: ${description.value}`);
  50.         tdhideColSpan.setAttribute("colspan", "3");
  51.         [btnMore, btnBuy].map((a) => tdBtns.appendChild(a));
  52.         [tdModel, tdPrice].map(e => tr.appendChild(e));
  53.         tr.appendChild(tdBtns);
  54.         [tdHide, tdhideColSpan].map((h) => trHide.appendChild(h));
  55.         list.appendChild(tr);
  56.         list.appendChild(trHide);
  57.  
  58.         model.value = '';
  59.         description = "";
  60.         year.value = '';
  61.         price.value = '';
  62.     }
  63.  
  64.     function creatElement(type, content, attribute) {
  65.         const el = document.createElement(type);
  66.         if (attribute) {
  67.             el.setAttribute('class', attribute); //atribute = class
  68.             el.textContent = content;
  69.         } else if (content) {
  70.             el.textContent = content;
  71.         }
  72.         return el;
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement