Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Java脚本正在忽略infinte循环中当前的setInterval_Javascript_Html_Css - Fatal编程技术网

Javascript Java脚本正在忽略infinte循环中当前的setInterval

Javascript Java脚本正在忽略infinte循环中当前的setInterval,javascript,html,css,Javascript,Html,Css,我目前正在做乌龟和兔子的家庭作业。我应该显示乌龟和兔子在移动,直到它们撞到70块瓷砖,然后脚本结束。除了一次显示所有移动外,所有操作都在运行,但我希望它每秒显示一个移动,但它当前忽略了我的设置间隔。下面是我的代码 编辑:我已经修复了它,所以它一次只显示一个移动,但现在一旦它到达终点,它会在选择赢家后继续移动。我想我有一个带有setInterval的无限循环,但我不确定我需要在哪里编辑代码 <html> <head> <title>Tortoise an

我目前正在做乌龟和兔子的家庭作业。我应该显示乌龟和兔子在移动,直到它们撞到70块瓷砖,然后脚本结束。除了一次显示所有移动外,所有操作都在运行,但我希望它每秒显示一个移动,但它当前忽略了我的设置间隔。下面是我的代码

编辑:我已经修复了它,所以它一次只显示一个移动,但现在一旦它到达终点,它会在选择赢家后继续移动。我想我有一个带有setInterval的无限循环,但我不确定我需要在哪里编辑代码

<html>
<head>
    <title>Tortoise and hare</title>

    <script type = "text/javascript">

        var posH = 1;
        var posT = 1;
        var track = new Array (70); 

        var intervalId; 




        function outputArray(theArray)
        {
            document.writeln("<table border = \"1\"");
            document.writeln("<tbody><tr>");
            var toPrint = "&nbsp;";
            for (var i = 1; i <= theArray.length; i++)
            {
                toPrint = "&nbsp;";
                if (i == posT) toPrint = "T";
                if (i == posH) toPrint = "H";
                if ((i == posT) && (i == posH)) toPrint = "OUCH!!!"; 
                document.writeln("<td>" + toPrint + "</td>");
            }
            document.writeln("</tr></tbody></table>");
        } 

        for (var i = 0;i < track.length; ++i)
            track[i] = i;
        outputArray(track);

        function updateClock(){

            moveposT();
            moveposH();

            if (posT > 69) posT = 69;
            if (posH > 69) posH = 69;
            outputArray(track);
            if ((posH >= 69) || (posT >= 69))
                raceEnds();

        } 

        function raceStarts(){
            document.write("BANG !!!!!<br/>AND THEY'RE OFF !!!!!<br/>");
            outputArray(track);
            intervalId = window.setInterval(updateClock, 100);
        } 
        function moveposT(){
            i = Math.floor( Math.random() * 11);

            if ((i >= 1) && (i <= 5)){ 
                posT = posT + 3;       

            }
            if ((i >= 6) && (i <= 7)){ 
                posT = posT - 6;    

            }
            if ((i >= 8) && (i <= 10)){
                posT = posT + 1;     

            }
            if (posT < 1){             
                posT = 1;          

            }

        } 
        function moveposH()
        {
            i = Math.floor(Math.random() * 11);

            if ((i >= 1) && (i <= 2)){
                posH = posH + 0;      

            }
            if ((i >= 3) && (i <= 4)){
                posH = posH + 9;      

            }
            if (5 == i){             
                posH = posH - 12;    

            }
            if ((i >= 7) && (i <= 8)){
                posH = posH + 1;    

            }
            if ((i >= 9) && (i <= 10)){
                posH = posH - 2;      

            }
            if (posH < 1){            
                posH = 1;           

            }

        } 

    function raceEnds()

    {
        clearInterval(intervalId);
        if ((posT == 69 ) && (posH == 69 ))
            document.write("<br/><br/><b>It's a tie.</b>");
        else {
            if (posT >= 69)
            {
                posT = 69 ;
                document.write("<br/><br/><b>Tortoise wins!!! Yay!!!</b>");
            }
            if (posH >= 69)
            {
                posH = 69 ;
                document.write("<br/><br/><b>Hare wins.Yuck!</b>");
            }
        }
    } 

</script>
</head>
<body onload="raceStarts();">


</body>
</html>

龟兔
var-posH=1;
var-posT=1;
var轨道=新阵列(70);
var有效期;
函数输出阵列(theArray)
{

document.writeln(“关于@MarkMeyer的评论:

您正在将
updatelock
的结果传递给
setInterval
。您需要传递函数本身而不调用它(即不调用
()
)。它看起来也像是在调用
窗口。setInterval
多次,并且会同时运行大量计时器


关于@MarkMeyer的评论:

您正在将
updatelock
的结果传递给
setInterval
。您需要传递函数本身而不调用它(即不调用
()
)。它看起来也像是在调用
窗口。setInterval
多次,并且会同时运行大量计时器


您正在将
updatelock
的结果传递给setInterval。您需要传递函数本身而不调用它(即不调用
()
)。它看起来也像你在调用
window.setInterval
很多次,而且会有很多计时器同时运行。是的,这正是我必须要做的,我只需要传递函数本身,而不调用它。正如你所说,我确实有多个计时器同时运行,我现在正在尝试调试它,并找出它需要的位置要删除。感谢您的帮助!您正在将
updatelock
的结果传递给setInterval。您需要传递函数本身而不调用它(即不调用
()
)。它看起来也像你在调用
window.setInterval
很多次,而且会有很多计时器同时运行。是的,这正是我必须要做的,我只需要传递函数本身,而不调用它。正如你所说,我确实有多个计时器同时运行,我现在正在尝试调试它,并找出它需要的位置s将被删除。感谢您的帮助!答案由@MarkMeyer提供,请不要简单地复制粘贴答案。是的,一旦它完成,至少一次,它将继续转到新的。我不确定我需要在何处修正设置间隔,以便在选择赢家后,它将停止而不是再次调用。答案由@MarkMeyer提供,请不要简化y复制粘贴答案。是的,一旦它完成,至少一次,它会继续转到新的答案。我不确定我需要在哪里调整设置间隔,以便在选择赢家后,它将停止,而不是再次调用。