Вы неправильно нацеливаетесь на элементы <div>
в querySelectorAll
. Кроме того, querySelectorAll
возвращает объект NodeList
, который состоит из всех запрашиваемых вами элементов div, поэтому вам нужно l oop через каждый элемент в NodeList, используя метод, подобный forEach () , а затем примените стиль к каждому элементу.
Проверьте и запустите следующий фрагмент кода для практического примера вышеуказанного подхода:
let container = document.getElementById("container");
let createGrid = (row, col) => {
for(let i = 0; i < (row * col); i++) {
let cell = document.createElement("div");
cell.className = ("cell");
container.appendChild(cell);
}
}
createGrid(100, 60);
let cells = document.querySelectorAll('#container div');
let functionality = () => cells.forEach(e => e.addEventListener('mouseover', (e) => {
e.target.style.backgroundColor = "red";
}
));
functionality();
.cell {padding: 5px;}
<div id="container"></div>
NB Вместо нацеливания на все элементы <div>
внутри #container
, вы можете выбрать все элементы div элементы с именем класса «cell», поскольку вы добавили это имя класса к каждому элементу сетки, и это предотвратит нежелательные css изменения в других типах <div>
элементов, которые вы можете добавить к #container
в долгосрочной перспективе.