script_for_index.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // DOM: multiply table
  2. // Сделать таблицу умножения, используя DOM createElement и innerText. Создайте таблицу, вложенные строки и
  3. // ячейки в циклах. Должно получится что-то вроде этого:
  4. // DOM: highlight cell
  5. // Подсветить ячейку, над которой находится курсор мыши. Используйте события mouseover и mouseout, и
  6. // style.backgroundColor для подсветки. Для того, что бы подсветить правильную ячейку, добавьте обработчики
  7. // событий во вложенный цикл, и используйте в них ту переменную, которая хранит <td>. В таком случае замыкания
  8. // вам помогут.
  9. // Подсветить строку и столбец, в которой находится подсвеченная ячейка. Если у вас обработчики событий
  10. // объявлены во вложенном цикле, то вы можете пользоваться счетчиками цикла (обычно i и j) и другими
  11. // переменными, например переменной, содержащей в себе DOM-элемент строки.
  12. multiply_table: {
  13. let table = document.createElement('table');
  14. document.body.append(table);
  15. for (let i = 0; i < 10; i++) {
  16. let tr = document.createElement('tr');
  17. table.append(tr);
  18. for (let j = 0; j < 10; j++) {
  19. let td = document.createElement('td');
  20. tr.append(td);
  21. if (i == 0) {
  22. td.innerText = j;
  23. } else if (j == 0) {
  24. td.innerText = i;
  25. } else {
  26. td.innerText = i * j;
  27. }
  28. handleMouseEvents(td, i, j);
  29. }
  30. }
  31. console.log(table);
  32. function handleMouseEvents(el, selectedI, selectedJ) {
  33. el.onmouseover = (event) => {
  34. for (let i = 0; i < table.children.length; i++) {
  35. for (let j = 0; j < table.children[i].children.length; j++) {
  36. if (i == selectedI || j == selectedJ) {
  37. table.children[i].children[j].style.backgroundColor = '#e5f3ff';
  38. }
  39. }
  40. }
  41. event.target.style.backgroundColor = '#b0d3f2';
  42. }
  43. el.onmouseout = (event) => {
  44. for (let i = 0; i < table.children.length; i++) {
  45. for (let j = 0; j < table.children[i].children.length; j++) {
  46. table.children[i].children[j].style.backgroundColor = '';
  47. }
  48. }
  49. }
  50. }
  51. }