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想在设置值后等待半秒,然后想再次重置值,请检查我上面的答案。