Javascript中的setTimeout冲突
setTimeout conflict in Javascript
我是这里的新手,也是JV/web开发的新手,试图在JS中创建一个轻量级反应游戏,但遇到了一些问题:
-
我试图在点击按钮后初始化游戏,但我发现页面刷新后游戏会自行启动?我在脚本底部调用按钮fxn"time_init()",但它仍然自己加载?
-
我该如何让游戏只进行15秒这样的固定时间?它继续。。。?我觉得setTimeout方法缺少,或者我用错了?
-
最后,如果我想计算一个正方形与一个圆形的点击次数,并在点击后输出他们的反应时间,最好的方法是什么?我想创建一个while循环,只计算在玩游戏时点击正方形的次数。。
这是我迄今为止的代码:
<input type="button" value="Start" onclick="time_init()" />
<p class="bold">Your time: <span id="time">0</span>s</p>
<div id="box"></div>
<script type="text/javascript">
var clickedTime; var createdTime; var reactionTime;
function getRandomColor() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++) {
color +=letters[Math.round(Math.random() * 15)];
}
return color;
}
function time_init() {
setTimeout('makeBox()', 1000);}
function makeBox() {
var time=Math.random();
time=time*1500;
setTimeout(function() {
if (Math.random()>0.5) {
document.getElementById("box").style.borderRadius="100px";
} else {
document.getElementById("box").style.borderRadius="";
}
var top=Math.random();
top=top*500;
var left=Math.random();
left=left*800;
document.getElementById("box").style.top=top+"px";
document.getElementById("box").style.left=left+"px";
document.getElementById("box").style.backgroundColor=getRandomColor();
document.getElementById("box").style.display="block";
createdTime=Date.now();
}, time);
}
document.getElementById("box").onclick=function() {
clickedTime=Date.now();
reactionTime= (clickedTime - createdTime)/1000;
document.getElementById("time").innerHTML=reactionTime;
this.style.display="none";
makeBox();
}
time_init();
您在代码末尾显式调用time_init();
。这将立即启动,并在1秒后调用makebox()
。
如果你想在15秒后关闭,创建一个标志变量和另一个超时来在这段时间后翻转它。然后,无论何时执行任何操作,都要检查该标志变量,以决定是否继续执行该操作。
var isRunning = true;
setTimeout( function() { isRunning=false; }, 15000 );
document.getElementById("box").onclick=function() {
clickedTime=Date.now();
reactionTime= (clickedTime - createdTime)/1000;
document.getElementById("time").innerHTML=reactionTime;
this.style.display="none";
if ( isRunning ) {
makeBox();
}
}
相关文章:
- setInteval vs setTimeout
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Javascript-ID冲突的几率
- setTimeout可以与闭包内的函数一起使用吗
- Javascript setTimeout for an array
- 刷新后,setTimeout将工作或不工作
- 继续使用javascript中的setTimeout
- setTimeout函数能否在其前面的代码执行之前激发
- jQuery setTimeOut: in for-loop
- SetTimeout and clearTimeout in Javascript
- 在setTimeout中调用相同的函数
- setTimeout不能太长
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- Javascript-SetTimeout导致浏览器冻结
- setTimeout and V8
- 将jQuery对象传递到setTimeout递归函数中
- 是定义的操作系统睡眠/挂起期间setTimeout的行为
- Pg承诺性能提升:在冲突中
- 将事务与setTimeout冲突,然后单击
- Javascript中的setTimeout冲突