javascript - 向子 div 添加悬停效果不起作用

标签 javascript html css typescript

我想为我的 parentDiv 中的所有子元素添加鼠标悬停效果。但是现在,如果我将鼠标悬停在其中一个方 block 上,我的 childDivs 的最后一个实际上会更改其背景,无论我将鼠标放在哪个子项上。这是为什么?

for (let i = 0; i < Number(height); i++)
    {
        for (let j = 0; j < Number(width); j++)
        {                               
            var childDiv = document.createElement("div");
            childDiv.className = "childDiv";
            childDiv.style.backgroundColor = "#e6e6e6";
            childDiv.id = `${i};${j}`
            childDiv.onclick = () => childDiv.style.backgroundColor = "black";
            childDiv.onmouseenter = () => childDiv.style.background = "#cccccc";                
            childDiv.onmouseleave = () => childDiv.style.background = "#e6e6e6";
            parentDiv.appendChild(childDiv); 
        }           
    }

最佳答案

将 var 更改为:

let childDiv = document.createElement("div");

工作示例 here .这里是关于 var and let 之间差异的更多信息(简而言之,var childDiv 在第一次迭代时创建一次(并且在循环外部可见),在最后一次迭代时,它的值设置为最后一项 - 每个箭头函数 ()=>{} 使用 childDiv 及其在循环执行后的最后一个值;let childDiv 在每次迭代时“单独”创建(它在 for 循环外不可见)并传递给箭头函数)。

关于javascript - 向子 div 添加悬停效果不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53328495/

相关文章:

javascript - 如何将 JSON 发送到我的 python 脚本?

html - 动态容器

javascript - 使用 angular 和 css 从数组数组创建自定义网格

javascript - heroku 在构建依赖项时不使用 babel 编译代码

javascript - 我怎样才能正确地消除 firebase 云功能的执行

html - CSS - 模糊文本/图像 - 变换 :skew

html - 通过 CSS 修改主题颜色

javascript - 从选择中获取值(value)——REACT

html - 如何在CSS中换行显示字母

javascript - 指数图动画 P5js Canvas