我有很多小方块,它们有一类“newDiv”。当鼠标光标在它们上面时,我想将它们的背景颜色更改为黑色。但是,即使鼠标光标消失,我也希望它们保持不变(背景颜色为黑色)。我正在尝试使我的代码正常工作,但我总是收到语法错误或根本不起作用。我改变了代码,试图修复语法等。black = true;let tiles = document.getElementsByClassName('newDiv');tiles.forEach(tile => {tile.addEventListener('mouseover', function(e){ if(black){ tile.style.backgroundColor = "black"; }}) }未捕获的语法错误丢失 ) 在参数列表tiles.forEach 之后不是函数。
3 回答
![?](http://img1.sycdn.imooc.com/54584cfb0001308402200220-100-100.jpg)
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
这是因为tiles不是数组。它看起来像一个,但实际上是一个HTMLCollection.
您可以通过转换为Arraywith来解决此问题Array.from():
let tiles = Array.from(document.getElementsByClassName('newDiv'));
或者改用for循环:
for (const tile of tiles) {
tile.addEventListener('mouseover', e => {
tile.style.backgroundColor = "black";
});
}
![?](http://img1.sycdn.imooc.com/545863f50001df1702200220-100-100.jpg)
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
因为你实际上错过了一个 ')'; 如果您使用箭头功能会更好:)
let black = true;
let tiles = document.getElementsByClassName('newDiv');
tiles.forEach(tile => {
tile.addEventListener('mouseover', e =>{
if(black){
tile.style.backgroundColor = "black";
}
})
})
此外,如this answer中所写-您使用了html集合而不是数组。
添加回答
举报
0/150
提交
取消