【发布时间】:2019-01-22 05:08:12
【问题描述】:
我正在尝试制作一个西蒙说游戏,我需要每秒随机更改背景。它会改变,但它会立即完成所有操作。我计划稍后添加一个样式表,但现在,我只需要它来工作。请帮忙。我是初学者,所以请温柔。
HTML:
<!DOCTYPE HTML>
<html>
<head>
<title>Simon Says</title>
<script src="script.js"></script>
</head>
<body>
<button onclick="blue()" class="blue">Blue</button>
<button onclick="green()" class="green">Green</button>
<button onclick="red()" class="red">Red</button>
<button onclick="yellow()" class="yellow">Yellow</button>
<button onclick="ready()" class="ready">Ready</button>
</body>
</html>
Javascript:
var seq = [0,1,2,1,3,2];
var rnd;
function ready(){
rnd = seq.length + 1;
for(i = 0; i <= rnd;){
seq[rnd] = Math.floor(Math.random()*4);
setInterval(
function () {
switch(seq[i]){
case 0:
document.body.style.backgroundColor = "rgb(0,0,255)";
break;
case 1:
document.body.style.backgroundColor = "rgb(0,255,0)";
break;
case 2:
document.body.style.backgroundColor = "rgb(255,0,0)";
break;
case 3:
document.body.style.backgroundColor = "rgb(255,255,0)";
break;
}
}, 1000);
console.log(i);
i++;
}
rnd++;
}
【问题讨论】:
-
你定义了
ready(),但从不调用它 -
ready()被称为onclick。 -
请检查这个答案:stackoverflow.com/a/7749109/4803039我相信它回答了你的问题
-
为什么要在 for 中调用 setIntervals? 1000 毫秒后,将触发 6 个 setIntervals,一旦
i存储在 setInterval 函数范围内,就会更改相同的颜色...
标签: javascript html