我有一个程序,它应该每半秒钟一次地随机改变一个表格中十字架的位置,但我找不到一种方法让程序等待半秒而不会挂起。
以下是我的代码,其中sleep(0.5)
应该用不同的东西切换:
<!DOCTYPE html>
<html>
<body>
<table>
<tr>
<td id="0x0">X</td>
<td id="1x0">X</td>
<td id="2x0">X</td>
</tr>
<tr>
<td id="0x1">X</td>
<td id="1x1">X</td>
<td id="2x1">X</td>
</tr>
<tr>
<td id="0x2">X</td>
<td id="1x2">X</td>
<td id="2x2">X</td>
</tr>
</table>
<script>
for(;;) {
var x = Math.floor(Math.random()*2);
var y = Math.floor(Math.random()*2);
id = x.toString() + "x" + y.toString();
document.getElementById(id).innerHTML = "O";
sleep(0.5);
document.getElementById(id).innerHTML = "X";
}
</script>
</body>
</html>
答案 0 :(得分:3)
Javascript没有名为sleep
的函数,但您可以在给定的时间间隔后使用setTiemout
执行函数。
我还建议您使用setInterval
而不是无限循环来在指定的时间间隔后执行命令集。
另一件事是您在随机值上使用floor
,该值始终为0
或1
,并且它永远不会{{1 }}。使用2
将值四舍五入到最接近的数字。因此,它会选择所有值。
Math.round
&#13;
setInterval(function() {
var x = Math.round(Math.random() * 2);
var y = Math.round(Math.random() * 2);
id = x.toString() + "x" + y.toString();
document.getElementById(id).innerHTML = "O";
setTimeout(function() {
document.getElementById(id).innerHTML = "X";
}, 500);
}, 100);
&#13;
答案 1 :(得分:1)
只需使用setTimeout
代替sleep
:
function doSomething () {
document.getElementById(id).innerHTML = "X";
var x = Math.floor(Math.random()*2);
var y = Math.floor(Math.random()*2);
id = x.toString() + "x" + y.toString();
document.getElementById(id).innerHTML = "O";
setTimeout(doSomething, 500);
}
或setInterval
方式:
setInterval(function () {
document.getElementById(id).innerHTML = "X";
var x = Math.floor(Math.random()*2);
var y = Math.floor(Math.random()*2);
id = x.toString() + "x" + y.toString();
document.getElementById(id).innerHTML = "O";
}, 500);
答案 2 :(得分:0)
可能更容易使用setInterval,它会每千分之一秒为你调用一个函数。
setInterval(function(){
var x = Math.floor(Math.random()*2);
var y = Math.floor(Math.random()*2);
id = x.toString() + "x" + y.toString();
document.getElementById(id).innerHTML = "O";
document.getElementById(id).innerHTML = "X";
}, 500);
答案 3 :(得分:0)
您似乎需要使用javascript&#39; setInterval功能。所以,如果你想让你的代码说出来,每10秒打印一次,你就可以这样做:
window.setInterval(printString, 10000);
var printString = function() {
console.log("hello world");
}
第一个参数是您希望执行的函数或操作,第二个参数是每次执行之间的间隔(以毫秒为单位)。