Допустим, у меня есть сетка, которая выглядит следующим образом (числа внутри ячейки предназначены только для маркировки, это могут быть просто пустые ячейки):
![enter image description here](https://i.stack.imgur.com/d3M4G.png)
Написано на HTML следующим образом:
<table>
<tr>
<td>0 </td>
<td>1 </td>
</tr>
<tr>
<td>2 </td>
<td>3 </td>
</tr>
</table>
Я хотел бы сделать две вещи:
- Добавить код JavaScript, который регистрирует номер ячейки вконсоль при нажатии на каждую ячейку.Вот как я это сделал:
const cells = document.querySelectorAll('td');
for (var i = 0; i < cells.length; i++) {
cells[i].addEventListener('click', function () {
console.log(i);
});
}
Но консоль всегда возвращает значение 4 везде, где я нажимаю на таблицу.Мои вопросы:
- Добавляя ячейки [i] .addEventListener на каждой итерации цикла for, добавляет ли он прослушиватель событий для каждой ячейки?
- Почему консоль всегдавернуть 4, даже если я нажал на ячейки [0], ячейки [\ 1], ячейки [2] или ячейки [3]?
- Что нужно сделать, чтобы консоль вернула желаемую позицию в ячейках массиват.е. вернуть 0, если я щелкнул по ячейкам [0], вернуть 1, если я щелкнул по ячейкам [\ 1], вернуть 2, если я щелкнул по ячейкам [2], вернуть 3, если я щелкнул по ячейкам [3]?
Далее
Второе, что я хотел бы сделать, это изменить цвет каждой ячейки в зависимости от цвета, который я выбрал из палитры цветов, установленного в HTML:
<input type="color" id="colorPicker">
ЗдесьВот как я это сделал:
const cells = document.querySelectorAll('td');
for (var i = 0; i < cells.length; i++) {
cells[i].addEventListener('click', function () {
const color = document.querySelector('#colorPicker').value;
cells[i].style.backgroundColor = color;
});
}
Но цвет ячейки не изменился.
Я не планирую использовать jQuery, я просто хотел бы использовать базовый JavaScript, который добавляетслушатель событий каждой ячейки.Я часами пытался найти выход, но в конце концов все еще не знал.Может ли кто-нибудь помочь?Я действительно ценю это, спасибо!