georgiev955

Furniture

Sep 28th, 2023
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.   const input = document.querySelector('#exercise  textarea');
  3.   const button = document.querySelector('#exercise  button');
  4.   button.addEventListener('click', generateRowElement);
  5.  
  6.   function generateRowElement(e) {
  7.     e.preventDefault();
  8.     let arr = JSON.parse(input.value);
  9.     for (const item of arr) {
  10.       let tableRow = document.createElement('tr');
  11.       document.querySelector('tbody').appendChild(tableRow);
  12.  
  13.       tableRow.innerHTML = `
  14.       <td><img src="${item.img}"></td>
  15.       <td>${item.name}</td>
  16.       <td>${item.price}</td>
  17.       <td>${item.decFactor}</td>
  18.       <td><input type="checkbox"></td>
  19.       `
  20.     }
  21.   }
  22.  
  23.   const buyButton = document.querySelector('#exercise button:nth-child(6)');
  24.   buyButton.addEventListener('click', shop);
  25.  
  26.   const textArea = document.querySelector('#exercise textarea:nth-child(5)');
  27.  
  28.   function shop(e) {
  29.     e.preventDefault();
  30.  
  31.     let result = {
  32.       furniture: [],
  33.       totalPrice: 0,
  34.       average: [],
  35.     };
  36.  
  37.     let tableRowsArr = Array.from(document.querySelectorAll('tbody tr'));
  38.  
  39.     tableRowsArr.forEach(row => {
  40.       let checkField = row.querySelector('input[type=checkbox]');
  41.  
  42.       if (checkField.checked) {
  43.         let name = row.querySelector(`td:nth-child(2)`).textContent;
  44.         let price = Number(row.querySelector(`td:nth-child(3)`).textContent);
  45.         let decoFact = Number(row.querySelector(`td:nth-child(4)`).textContent);
  46.  
  47.         result.furniture.push(name);
  48.         result.totalPrice += price;
  49.         result.average.push(decoFact);
  50.       }
  51.     })
  52.  
  53.     let avgDeco = result.average.reduce((a, b) => a + b) / result.furniture.length;
  54.     textArea.value = `Bought furniture: ${result.furniture.join(', ')}\nTotal price: ${result.totalPrice.toFixed(2)}\nAverage decoration factor: ${avgDeco}`;
  55.  
  56.   }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment