javascript - 如何设置 div onclick 的背景?
问题描述
我试图在单击 div 时设置它的背景,然后当再次单击它时它会反转回无颜色。这是我的代码:
<div class="wrapper">
<div onclick="set()" id="square"></div>
<div onclick="set()" id="square"></div>
<div onclick="set()" id="square"></div>
<div onclick="set()" id="square"></div>
<div onclick="set()" id="square"></div>
<div onclick="set()" id="square"></div>
<div onclick="set()" id="square"></div>
</div>
.wrapper {
display: grid;
grid-template-columns: repeat(107, 1fr);
grid-template-rows: repeat(59, 1fr);
grid-gap: 0px;
}
.wrapper div {
padding: 5px;
background-color: none;
text-align: center;
border: 0.001px solid black;
font-size: 5px;
display: flex;
justify-content: center;
align-items: center;
}
.wrapper div:hover {
background: white;
}
function set() {
var squares = document.getElementById('square');
for (var i = 0; i < squares.length; i++) {
squares[i].style.backgroundColor = "none";
}
if (squares[i].style.backgroundColor === "none") {
squares[i].style.backgroundColor = "white";
} else {
squares[i].style.backgroundColor = "none";
}
}
当我单击 div 时,它什么也不做。我的javascript代码不起作用,我应该如何更改它,以便在单击时使div背景变为白色,然后在再次单击时变为无。
解决方案
您可以在侦听单击事件的父元素上放置一个事件侦听器。当它收到点击事件时,如果它来自其中一个方块,则切换一个类以保持背景颜色。如果它已经有那个类,它将被删除。
document.querySelector('.squares').addEventListener('click', e => {
if (e.target.classList.contains('square')) {
e.target.classList.toggle('selected');
}
});
.wrapper {
display: grid;
grid-template-columns: repeat(107, 1fr);
grid-template-rows: repeat(59, 1fr);
grid-gap: 0px;
}
.wrapper div {
padding: 5px;
background-color: none;
text-align: center;
border: 0.001px solid black;
font-size: 24px;
display: flex;
justify-content: center;
align-items: center;
}
.wrapper .square:hover, .square.selected {
background: white;
}
body { background-color: #888; }
<div class="wrapper squares">
<div class="square">A</div>
<div class="square">B</div>
<div class="square">C</div>
<div class="square">D</div>
<div class="square">E</div>
<div class="square">F</div>
<div class="square">G</div>
</div>
推荐阅读
- java - 通过将二维数组复制到一维数组来对其进行排序,输出是正确的,但迭代正在重复
- google-bigquery - BigQuery 表创建选项
- java - 如果出现 SQLException,insert 语句会发生什么?
- flutter - 在 TextField 小部件中从下方剪切文本:Flutter
- javascript - 无法在 IE 和 Edge 浏览器上从asset/test.xlsx 下载 excel 文件
- c# - 使用 Identity MVC C# 已经存在使用 Identity Username
- java - 从java中的文本文件中读取不同类型的变量
- python - 使用函数拆分数据帧并在 python 中单独调用数据帧时出错
- python - 使用功能及其内容的不同结果
- angular - 使用 .net 核心在 Angular 8 应用程序中直接下载带有 url 的文件,类似于带有应用程序 url 的 asp.net 文件路径