main.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //Таблица умножения
  2. let body = document.querySelector(".body"); //Нахожу в разметке тег body, буду в нем отрисовывать таблицу
  3. let table = document.createElement("table"); //Создания тега table
  4. table.classList.add("table"); //Присваиваю таблице класс table для частичной стилизации из css
  5. for(let i = 1; i < 10; i++) { //Цикл для отрисовки таблицы
  6. let tr = document.createElement("tr");
  7. for(let j = 1; j < 10; j++) {
  8. let td = document.createElement("td");
  9. td.textContent = i*j;
  10. tr.appendChild(td);
  11. }
  12. table.appendChild(tr);
  13. }
  14. body.appendChild(table);
  15. //Подсветить ячейку
  16. //Подсветить строку и столбец,
  17. let allTd = document.querySelectorAll("td"); //Нахожу все td на странице что бы я мог навесить слушателей событий
  18. let fillTheLineHorizontally = function(style, element) { //Эта функция будет каждому элементу td в строке добавляет атрибут style с переданным в него цветом
  19. let allparentTdElement = element.parentElement.querySelectorAll("td");
  20. for(let itemElement of allparentTdElement) {
  21. itemElement.style = style;
  22. }
  23. }
  24. let fillTheLineVertically = function(style, element, index) { //Эта функция будет каждому элементу td в столбце добавляет атрибут style с переданным в него цветом, отличия от функции fillTheLineHorizontally состоит в том что fillTheLineVertically заходит в каждый элемент tr и красит один элемент td по индексу который я в нее передаю
  25. let mainTable = element.parentElement.parentElement;
  26. let mainTr = mainTable.querySelectorAll("tr");
  27. for(let mainItemTr of mainTr) {
  28. mainItemTr.children[index].style = style;
  29. }
  30. }
  31. for(item of allTd) { //Этот цикл навешивает слушатели событий на все td
  32. item.addEventListener("mouseover", function(evt) { //Отрисовка цвета при ховере
  33. let index = this.cellIndex;
  34. fillTheLineHorizontally("background-color: #f7d571;", this);
  35. fillTheLineVertically("background-color: #f7d571;", this, index)
  36. this.style = "background-color: #a8996a;";
  37. });
  38. item.addEventListener("mouseout", function() { //Удаление отрисовки когда ховер пропадает
  39. let index = this.cellIndex;
  40. fillTheLineHorizontally("", this);
  41. fillTheLineVertically("", this, index)
  42. });
  43. }
  44. //Calc
  45. //Calc Live
  46. //Я уже реализовал эти задачи в HW 01 для задания calc, данные обновляются динамически