dilyana2001

06. Furniture

Jul 1st, 2021 (edited)
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     let generateButton = document.querySelectorAll('#exercise button')[0];
  3.     let generateInput = document.querySelectorAll('#exercise textarea')[0];
  4.     let buyButton = document.querySelectorAll('#exercise button')[1];
  5.     let buyInput = document.querySelectorAll('#exercise textarea')[1];
  6.     let table = document.querySelector('.col-md-12 tbody');
  7.     let component = table.querySelector('tr');
  8.     generateButton.addEventListener('click', generateItems);
  9.     buyButton.addEventListener('click', buyItems);
  10.  
  11.     function generateItems() {
  12.         let parsedData = JSON.parse(generateInput.value);
  13.         parsedData.forEach(obj => {
  14.             let element = component.cloneNode(true);
  15.             element.querySelector('td img').setAttribute('src', obj.img);
  16.             element.querySelector('td:nth-child(2) p').textContent = obj.name;
  17.             element.querySelector('td:nth-child(3) p').textContent = Number(obj.price);
  18.             element.querySelector('td:nth-child(4) p').textContent = Number(obj.decFactor);
  19.             element.querySelector('td input').disabled = false;
  20.             table.appendChild(element);
  21.         })
  22.     }
  23.  
  24.     function buyItems() {
  25.         let tableRows = Array.from(table.querySelectorAll('tr'));
  26.         let checked = tableRows.filter(row => row.querySelectorAll('input:checked').length > 0);
  27.         let names = checked.map(name => name.querySelector('td:nth-child(2) p')).map(x => x.textContent).join(', ');
  28.         let price = checked.map(price => price.querySelector('td:nth-child(3) p')).map(x => Number(x.textContent)).reduce((a, b) => (a + b), 0);
  29.         let average = checked.map(dec => dec.querySelector('td:nth-child(4) p')).map(x => Number(x.textContent));
  30.         let averageDec = average.reduce((a, b) => a + b, 0) / average.length;
  31.         buyInput.textContent = `Bought furniture: ${names}\nTotal price: ${price.toFixed(2)}\nAverage decoration factor: ${averageDec}`;
  32.     }
  33. }
Add Comment
Please, Sign In to add comment