// DOM: multiply table
// Сделать таблицу умножения, используя DOM createElement и innerText. Создайте таблицу, вложенные строки и
// ячейки в циклах. Должно получится что-то вроде этого:
// DOM: highlight cell
// Подсветить ячейку, над которой находится курсор мыши. Используйте события mouseover и mouseout, и
// style.backgroundColor для подсветки. Для того, что бы подсветить правильную ячейку, добавьте обработчики
// событий во вложенный цикл, и используйте в них ту переменную, которая хранит
. В таком случае замыкания
// вам помогут.
// Подсветить строку и столбец, в которой находится подсвеченная ячейка. Если у вас обработчики событий
// объявлены во вложенном цикле, то вы можете пользоваться счетчиками цикла (обычно 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 = '';
}
}
}
}
}
|