javascript - 随机循环按计划工作,但在几次调用后卡在特定的随机数上
问题描述
我使用 css 和 html 创建了 13 个看起来像盒子的对象,每个对象都有独特的背景颜色。然后用javascript添加了一些随机变色功能。
我想要发生的事情:单击 13 个框中的任何一个后,每个框都会变成“新”颜色。这种“新”颜色将从每个盒子最初固定的颜色中随机选择。这将永远持续下去。
发生了什么:当单击框时,它们确实会像我想要的那样改变颜色,但是在单击大约 5-10 次后,它们都会变成完全相同的颜色。
如何让功能继续运行而不停留在某种颜色?
我可能搞砸了 for 循环/所有的 javascript,但无法弄清楚。非常感谢任何帮助。
这是我的完整代码:https ://codepen.io/zaemees/pen/roGgGV
一些代码:
html:
<div class="aqua1 specs"></div>
<div class="chartreuse1 specs"></div>
<div class="deeppink1 specs"></div>
<div class="dodgerblue1 specs"></div>
<div class="gold1 specs"></div>
<div class="indigo1 specs"> </div>
<div class="lightpink1 specs"></div>
<div class="mediumpurple1 specs"></div>
<div class="coral1 specs"></div>
<div class="springgreen1 specs"></div>
<div class="red1 specs"></div>
<div class="peachpuff1 specs"></div>
<div class="deepskyblue1 specs"></div>
js:
var bloop = document.getElementsByClassName('specs');
for (var i = 0; i < bloop.length; i++){
bloop[i].onclick = function() {
for (var i = 0; i < bloop.length; i++){
bloop[i].style.backgroundColor = window.getComputedStyle(bloop[Math.floor(Math.random()*13)]).getPropertyValue('background-color');
}
}
}
解决方案
我不确定我是否完全理解这段代码,但据我所知,您在两个 for 循环中都使用了变量“i”两次。我不知道这是否是故意的,但是将嵌套变量“i”更改为“j”应该可以完成这项工作。我希望这会有所帮助!
推荐阅读
- google-cloud-platform - 如何在 GCP 上的 Ray 中传输有关工作人员的数据?
- schema.org - 如何正确定义非轮播类别页面的架构并满足消费者谷歌
- python - 如何根据应用于另一列的条件设置 Pandas DataFrames 列值
- java - 如何在没有特定路径的子项下添加子项?
- python - 条纹的 python sdk 的 PaymentMethod 问题
- ios - Xcode 10.2 for iOS12.2 中是否缺少“Intent is user-configurable”复选框?
- php - 如何查看数组的所有成员?
- java - Spring Boot 为不安全的端点抛出 NotificationBroadcasterSupport::sendNotification NullPointerException
- azure-functions - Azure 函数(队列触发器),Web 应用共享数据类型最佳实践
- python - Argparse 在 CentOS 7 上无法正确解析参数