12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // DOM: multiply table
- // Сделать таблицу умножения, используя DOM createElement и innerText. Создайте таблицу, вложенные строки и
- // ячейки в циклах. Должно получится что-то вроде этого:
- // DOM: highlight cell
- // Подсветить ячейку, над которой находится курсор мыши. Используйте события mouseover и mouseout, и
- // style.backgroundColor для подсветки. Для того, что бы подсветить правильную ячейку, добавьте обработчики
- // событий во вложенный цикл, и используйте в них ту переменную, которая хранит <td>. В таком случае замыкания
- // вам помогут.
- // Подсветить строку и столбец, в которой находится подсвеченная ячейка. Если у вас обработчики событий
- // объявлены во вложенном цикле, то вы можете пользоваться счетчиками цикла (обычно i и j) и другими
- // переменными, например переменной, содержащей в себе DOM-элемент строки.
- multiply_table: {
- let table = document.createElement('table');
- document.body.append(table);
- for (let i = 0; i < 10; i++) {
- let tr = document.createElement('tr');
- table.append(tr);
- for (let j = 0; j < 10; j++) {
- let td = document.createElement('td');
- tr.append(td);
- if (i == 0) {
- td.innerText = j;
- } else if (j == 0) {
- td.innerText = i;
- } else {
- td.innerText = i * j;
- }
- handleMouseEvents(td, i, j);
- }
- }
- console.log(table);
- function handleMouseEvents(el, selectedI, selectedJ) {
- el.onmouseover = (event) => {
- for (let i = 0; i < table.children.length; i++) {
- for (let j = 0; j < table.children[i].children.length; j++) {
- if (i == selectedI || j == selectedJ) {
- table.children[i].children[j].style.backgroundColor = '#e5f3ff';
- }
- }
- }
- event.target.style.backgroundColor = '#b0d3f2';
- }
- el.onmouseout = (event) => {
- for (let i = 0; i < table.children.length; i++) {
- for (let j = 0; j < table.children[i].children.length; j++) {
- table.children[i].children[j].style.backgroundColor = '';
- }
- }
- }
- }
- }
|