我有一个程序应该永远每半秒随机改变表格中十字的位置,但我找不到一种方法让程序等待半秒而不挂起。
以下是我的代码,其中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>
最佳答案
Javascript 没有名为 sleep
的函数,但您可以使用 setTiemout
在给定时间间隔后执行函数。
我还建议您使用 setInterval
而不是无限 for 循环来在指定的时间间隔后执行命令集。
另一件事是,您在随机值上使用 floor
,该值始终为 0
或 1
并且它会永远不会2
。使用 Math.round 将值四舍五入到最接近的数字。因此它将选择所有值。
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);
<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>
关于javascript - Javascript 中无限循环休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32718493/