javascript - 如何修复 ClearInterval
问题描述
我正在开发游戏。我有带细胞的板子。单击开始后,3s 后,第一个单元格亮起,然后是下一个和下一个……但是,我希望板上只有一个单元格亮起。这是我的代码:
let intervalId;
const start = document.getElementById("start");
const reset = document.getElementById("reset");
const cells = [].map.call(
document.getElementsByClassName("board__box"),
(currentValue) => currentValue
);
const cell = cells.map(cell => cell);
function setCellPosition() {
const randomNumber = Math.round(Math.random() * 24);
for( let j=0; j< cell.length; j++) {
if(cell[j].getAttribute("data-row") == randomNumber && cell[j].getAttribute("data-column") == randomNumber) {
cell[j].classList.add("check");
}
}
console.log(intervalId);
}
function startInterval() {
clearInterval(intervalId);
intervalId = setInterval(setCellPosition, 3000);
}
start.addEventListener("click", startInterval);
HTML 代码。board__box
我有 25 个班级的 div
<div class="board">
<div class="board__box" data-row="0" data-column="0"></div>
</div>
为什么 clearInterval 不起作用?
解决方案
从我所见,您正在打开您的细胞,但您从未关闭已打开的细胞。(你永远不会删除“检查”css 类)。像这样的东西:
for( let j=0; j< cell.length; j++) {
cell[j].classList.remove("check"); // added
if(cell[j].getAttribute("data-row") == randomNumber && cell[j].getAttribute("data-column") == randomNumber) {
cell[j].classList.add("check");
}
}
推荐阅读
- c++ - OpenGL:沿该方向旋转和移动
- c - C如何将一个选项卡排序为多个选项卡
- python - 如何为时间序列数据创建线性回归模型?
- docker - 为什么我需要主机网络在我的 jenkins 服务器上构建 docker 映像?
- php - 在 PHP 中的 for 循环外创建单个数组
- c++ - 什么是 const 指针 const 引用类型的参数?(常数 X* 常数 & p)
- matlab - 为什么fortran mkl-fftw3和matlab的结果不一致?
- iphone - 我可以在 xcode 中使用 Iphone VoiceOver 吗?
- sql - 查询仅计算该特定日期的时间差
- keystore - Wiremock 忽略存储在自定义密钥库中的证书