javascript - 我的 Javascript forEach 循环与我的事件监听器相结合只能工作一次
问题描述
我正在尝试制作一个简单的游戏,玩家单击活动按钮(当前唯一可见的按钮),一旦单击,它将消失并出现一个新按钮。从我可以构建的内容来看,它可以工作但只有一次。当我单击第二个按钮时,它是静止的。我目前拥有它,因此当按钮处于活动状态时,它具有 .active 类,其中包含应用于它的各种 CSS 样式。非活动类应用了透明样式。我认为在我的 forEach 循环中,每次单击活动按钮时,它都会产生另一个随机数,将该数字添加到我的按钮 ID 以激活它,并使旧按钮处于非活动状态。我错过了什么?
lodashRandNumber = () => {
return _.random(1, 10);
}
let activeButton = document.querySelector(`#btn${lodashRandNumber()}`);
console.log(activeButton);
activeButton.className = "active"
let visibleButtons = document.querySelectorAll('.active');
visibleButtons.forEach(button => button.addEventListener('click', (event) => {
if (button.classList.contains('active')) {
button.classList.remove('active');
button.classList.add('inactive');
let newLodashRandNumber = () => {
return _.random(1, 10);
}
let newActiveButton = document.querySelector(`#btn${newLodashRandNumber()}`);
console.log(newActiveButton);
newActiveButton.className = "active"
}
}))
body {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 1fr 4fr 1fr 2fr;
background-color: #d9e4dd;
}
.inactive {
background-color: transparent;
opacity: 0.5;
margin: 10px;
padding: 50px;
border-radius: 28px;
color: transparent;
border: transparent;
font-size: 1em;
}
.active {
background-color: #9aa39d;
opacity: 0.5;
margin: 83px;
padding: 50px;
border-radius: 28px;
color: #433d3c;
border: transparent;
font-size: 2em;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
<button id="btn1" class="inactive">button 1</button>
<button id="btn2" class="inactive">button 2</button>
<button id="btn3" class="inactive">button 3</button>
<button id="btn4" class="inactive">button 4</button>
<button id="btn5" class="inactive">button 5</button>
<button id="btn6" class="inactive">button 6</button>
<button id="btn7" class="inactive">button 7</button>
<button id="btn8" class="inactive">button 8</button>
<button id="btn9" class="inactive">button 9</button>
<button id="btn10" class="inactive">button 10</button>
解决方案
推荐阅读
- excel - 为数据透视表中的数字范围创建自定义组
- xml - 用于识别 XML 文件列表中的重复项的 Powershell 脚本
- firebase - 如何在使用 Firebase 身份验证的应用中加入生物特征身份验证
- javascript - 对象作为 React 子级无效。如果您打算渲染一组孩子,请改用数组 - FlatList
- c# - 使用 HttpClient 测量服务器响应时间
- vue.js - 您好,我正在尝试使用 v-if,但想知道要输入什么才能单击按钮作为真实声明
- javascript - forkJoin 但下一个 observable 取决于之前的那个
- java - 保持父子关系的平树对象
- python - 在运行时更改 Python 函数
- python - 没有显示错误,但程序未在 pytest 中运行