Javascript中的无限循环睡眠
我有一个程序,它应该每半秒随机改变一个十字在桌子上的位置,但我找不到一种方法让程序等待半秒而不挂起 下面是我的代码,其中Javascript中的无限循环睡眠,javascript,html,Javascript,Html,我有一个程序,它应该每半秒随机改变一个十字在桌子上的位置,但我找不到一种方法让程序等待半秒而不挂起 下面是我的代码,其中睡眠(0.5)应该用不同的东西切换: <!DOCTYPE html> <html> <body> <table> <tr> <td id="0x0">X</td> <td id="1x0">X</td>
睡眠(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>
X
X
X
X
X
X
X
X
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”;
睡眠(0.5);
document.getElementById(id).innerHTML=“X”;
}
Javascript没有名为sleep
的函数,但您可以使用setTiemout
在给定的时间间隔后执行函数
我还建议您在指定的时间间隔后使用setInterval
而不是无限for循环来执行一组命令
另一件事是对随机值使用floor
,它总是0
或1
,永远不会2
。使用Math.round
将值四舍五入到最接近的数字。所以它会选择所有的值
setInterval(函数(){
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(函数(){
document.getElementById(id).innerHTML=“X”;
}, 500);
}, 100);代码>
X
X
X
X
X
X
X
X
X
Javascript没有名为sleep
的函数,但您可以使用setTiemout
在给定的时间间隔后执行函数
我还建议您在指定的时间间隔后使用setInterval
而不是无限for循环来执行一组命令
另一件事是对随机值使用floor
,它总是0
或1
,永远不会2
。使用Math.round
将值四舍五入到最接近的数字。所以它会选择所有的值
setInterval(函数(){
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(函数(){
document.getElementById(id).innerHTML=“X”;
}, 500);
}, 100);代码>
X
X
X
X
X
X
X
X
X
只需使用,而不必睡眠
:
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);
}
或者一种方式:
只需使用而不是睡眠
:
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(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);
更容易使用,每千分之一秒调用一个函数
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);
看起来您需要改用javascript的函数。所以,如果你想让你的代码说,每10秒打印一次,你可以这样做:
window.setInterval(printString, 10000);
var printString = function() {
console.log("hello world");
}
第一个参数是您希望执行的函数或操作,第二个参数是每次执行之间的间隔(以毫秒为单位)。看起来您需要改用javascript函数。所以,如果你想让你的代码说,每10秒打印一次,你可以这样做:
window.setInterval(printString, 10000);
var printString = function() {
console.log("hello world");
}
第一个参数是您希望执行的函数或操作,第二个参数是每次执行之间的间隔(以毫秒为单位)。@AndrewIce请参阅并停止垃圾邮件<代码>:P
引用被视为垃圾邮件。可能是更好的副本:。@AndrewIce请引用并停止垃圾邮件<代码>:P对的引用被视为垃圾邮件。可能是更好的副本:。我认为您不理解问题,希望在设置值后等待半秒,然后再次重置值。请检查我上面的答案。我认为您不理解问题,OP想在设置值后等待半秒,然后想再次重置值,请检查我上面的答案。