Advertisement
divanov94

Untitled

Nov 10th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let htmlSelectors = {
  2.     'studentsDb': () => document.querySelector('table>tbody'),
  3.     'getTable': () => document.querySelector('#results')
  4. }
  5.  
  6. htmlSelectors['getTable']().addEventListener('mouseover', loadAll);
  7.  
  8.  
  9.  
  10.  
  11. function loadAll() {
  12.     fetch('https://students-test-264be.firebaseio.com/database.json')
  13.         .then(response => response.json())
  14.         .then(render);
  15.  
  16. }
  17.  
  18.  
  19. function render(data) {
  20.     let studentsDb = htmlSelectors['studentsDb']();
  21.  
  22.     Object.keys(data)
  23.         .forEach(student => {
  24.             let { id, firstName, lastName, facultyNum, grade } = data[student];
  25.  
  26.             let tableRow = create('tr', '', {}, {},
  27.                 create('td', id, {}, {}),
  28.                 create('td', firstName, {}, {}),
  29.                 create('td', lastName, {}, {}),
  30.                 create('td', facultyNum, {}, {}),
  31.                 create('td', grade, {}, {}))
  32.  
  33.             studentsDb.appendChild(tableRow);
  34.         })
  35. }
  36.  
  37.  
  38. function create(type, text, attributes, events, ...children) {
  39.     let domElement = document.createElement(type);
  40.  
  41.     if (text !== '') {
  42.         domElement.textContent = text;
  43.     }
  44.  
  45.     Object.entries(attributes)
  46.         .forEach(([attrKey, attrValue]) => {
  47.             domElement.setAttribute(attrKey, attrValue)
  48.         });
  49.  
  50.     Object.entries(events)
  51.         .forEach(([eventName, handler]) => {
  52.             domElement.addEventListener(eventName, handler)
  53.         });
  54.  
  55.     children
  56.         .forEach((child) => {
  57.             domElement.appendChild(child)
  58.         });
  59.     return domElement;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement