【发布时间】:2018-12-29 23:15:59
【问题描述】:
使用 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');
}
}
}
【问题讨论】:
-
嗨,欢迎来到 SO。你是从你的随机集合中挑选的,但你不是专门挑选的,所以你可能会不止一次挑选一个。这会导致在下一代中更频繁地选择它的机会更高,直到只剩下一个选择:) @CertainPerformance - 只需按 Enter 而不是 ctrl 输入我的错误 :)
标签: javascript html css for-loop