script.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //DOM
  2. /* ТЕще дз: переписать подсветку таблицы используя минимум this.* и максимум переменных замыкания. Для этого Надо занести обработчики событий во вложенный for */
  3. function Table(rootElementClass) {
  4. let domElement = document.querySelector(`.${rootElementClass}`);
  5. this.tableCreate = () => {
  6. let table = document.createElement('table');
  7. for (let i = 0; i < 10; i++) {
  8. let tr = document.createElement('tr');
  9. table.append(tr);
  10. for (let k = 0; k < 10; k++) {
  11. let td = document.createElement('td');
  12. if (i === 0) {
  13. td.innerText = k;
  14. tr.append(td);
  15. } else if (k === 0) {
  16. td.innerText = i;
  17. tr.append(td);
  18. } else {
  19. td.innerText = i * k;
  20. tr.append(td);
  21. }
  22. }
  23. }
  24. domElement.append(table);
  25. }
  26. this.cellLigth = () => {
  27. const td = document.querySelectorAll('td');
  28. td.forEach((item, i) => {
  29. item.onmouseover = (e) => {
  30. item.style.backgroundColor = 'yellow';
  31. item.parentNode.style.backgroundColor = 'green';
  32. let trCollect = Array.from(item.parentElement.parentElement.children);
  33. trCollect.forEach((el, i) => {
  34. if (el.children[i].cellIndex === item.cellIndex) {
  35. Array.from(el.parentElement.children).forEach(elem => elem.children[i].style.backgroundColor = 'red');
  36. }
  37. });
  38. };
  39. item.onmouseout = () => {
  40. item.style.backgroundColor = '';
  41. item.parentNode.style.backgroundColor = '';
  42. let trCollect = Array.from(item.parentElement.parentElement.children);
  43. trCollect.forEach((el, i) => {
  44. if (el.children[i].cellIndex === item.cellIndex) {
  45. Array.from(el.parentElement.children).forEach(elem => elem.children[i].style.backgroundColor = '');
  46. }
  47. });
  48. }
  49. })
  50. }
  51. }
  52. let table1 = new Table('root');
  53. table1.tableCreate();
  54. table1.cellLigth();
  55. let table2 = new Table('root');
  56. table1.tableCreate();
  57. table1.cellLigth();