Advertisement
Guest User

js-advance-08-furniture

a guest
Oct 11th, 2019
1,048
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     const genBtn = document.querySelector('#exercise button');
  3.     const buyBtn = document.querySelector("#exercise > button:nth-child(6)");
  4.     genBtn.addEventListener('click', getData);
  5.     buyBtn.addEventListener('click', procesData);
  6.     const tbody = document.querySelector("#exercise > div > div > div > div > table > tbody");
  7.     const result = document.querySelector("#exercise > textarea:nth-child(5)");
  8.     let totalPrice = 0;
  9.     let avgDecFactor = 0;
  10.     let averages = [];
  11.     let goodsBuyed = [];
  12.  
  13.     function genAttrElement(type, attr, content) {
  14.         let item = document.createElement(type);
  15.         item.setAttribute(attr, content);
  16.         return item;
  17.     }
  18.  
  19.     function genericElement(typeEl, content) {
  20.         let htmlElement = document.createElement(typeEl);
  21.         if (typeof content === 'string' || typeof content === 'number') {
  22.             htmlElement.innerHTML = content;
  23.         }
  24.         if (typeof content === 'object') {
  25.             htmlElement.appendChild(content);
  26.         }
  27.         return htmlElement;
  28.     }
  29.  
  30.     function addItem(par, child) {
  31.         return par.appendChild(child);
  32.     }
  33.  
  34.     function getData() {
  35.         let arr = JSON.parse(document.querySelector("#exercise > textarea:nth-child(2)").value);
  36.         arr.map(function (e) {
  37.                 let name = genericElement('p', e['name']);
  38.                 let img = genAttrElement('img', 'src', e['img']);
  39.                 let price = genericElement('p', e['price']);
  40.                 let decFactor = genericElement('p', e['decFactor']);
  41.                 let input = genAttrElement('input', 'type', 'checkbox');
  42.                 let tr = genericElement('tr', '');
  43.                 addItem(tr, genericElement('td', img));
  44.                 addItem(tr, genericElement('td', name));
  45.                 addItem(tr, genericElement('td', price));
  46.                 addItem(tr, genericElement('td', decFactor));
  47.                 addItem(tr, genericElement('td', input));
  48.                 addItem(tbody, tr);
  49.             }
  50.         )
  51.     }
  52.  
  53.     function procesData() {
  54.         let resultData = Array.from(document.querySelectorAll("input[type='checkbox']"));
  55.         resultData.map(e => {
  56.             if (e.checked === true) {
  57.                 averages.push(+e.parentNode.previousElementSibling.textContent);
  58.                 totalPrice += +e.parentNode.previousElementSibling.previousElementSibling.textContent;
  59.                 goodsBuyed.push(e.parentNode.previousElementSibling.previousElementSibling.previousElementSibling.textContent);
  60.             }
  61.         });
  62.         avgDecFactor = averages.reduce((a, b) => a + b, 0) / averages.length;
  63.         result.value += "Bought furniture: " + goodsBuyed.join(', ') + "\n";
  64.         result.value += "Total price: " + totalPrice.toFixed(2) + "\n";
  65.         result.value += "Average decoration factor: " + avgDecFactor.toPrecision(1) + "\n";
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement