简体   繁体   English

在JavaScript中循环时不退出

[英]Not exiting while loop in javascript

I have a localhost website where I have a "start" button which triggers the follow function: 我有一个本地主机网站,这里有一个“开始”按钮,它会触发跟随功能:

function startGame(){
    startTime = new Date().getTime();
    currentTime = new Date().getTime();
    while((currentTime-startTime)<2000){
        document.getElementById('test').innerHTML = 'test1'
        if(allyClicked){
            allyTrack += 1;
            allyString.append(allyTrack.toString())
            allyClicked = false;
        } else if(scaleClicked){
            scaleTrack += 1;
            scaleString.append(scaleTrack.toString())
            scaleClicked = false;
        } else if(enemyClicked){
            enemyTrack += 1;
            enemyString.append(enemyTrack.toString())
            enemyClicked = false;
        } else{
            allyString.append(allyTrack.toString())
            scaleString.append(scaleTrack.toString())
            enemyString.append(enemyTrack.toString())               
        }
        currentTime = new Date().getTime();
    }
    document.getElementById('test').innerHTML = 'test2';
    document.getElementById('list').innerHTML = allyString + '\n' + scaleString + '\n' + enemyString;
}

The issue I seem to be having is that although I set a time limit of 2000 milliseconds, it does not leave the loop. 我似乎遇到的问题是,尽管我将时间限制设置为2000毫秒,但它并未退出循环。 (and change "test1" to "test2") Client-Server communication is confusing to me because this is my first attempt at a website, so I apologize if I'm missing something dumb. (并将“ test1”更改为“ test2”)客户端与服务器之间的通信使我感到困惑,因为这是我第一次尝试访问某个网站,因此如果我缺少一些愚蠢的东西,我深表歉意。

Edited: 编辑:

function startGame(){
            var startTime = new Date().getTime();
            //var currentTime = new Date().getTime();
            while(true){
                document.getElementById('test').innerHTML = 'test1';
                if(allyClicked){
                    allyTrack += 1;
                    allyString.append(allyTrack.toString())
                    allyClicked = false;
                }
                else if(scaleClicked){
                    scaleTrack += 1;
                    scaleString.append(scaleTrack.toString())
                    scaleClicked = false;
                }
                else if(enemyClicked){
                    enemyTrack += 1;
                    enemyString.append(enemyTrack.toString())
                    enemyClicked = false;
                }
                else{
                    allyString.append(allyTrack.toString())
                    scaleString.append(scaleTrack.toString())
                    enemyString.append(enemyTrack.toString())               
                }
                //currentTime = new Date().getTime();

                if((Math.abs(new Date().getTime() - startTime))>2000){
                    break;
                }
            }
            document.getElementById('test').innerHTML = 'test2';
            document.getElementById('list').innerHTML = allyString + '\n' + scaleString + '\n' + enemyString;
        }

Still not printing the "test2". 仍然不打印“ test2”。 I must still be missing something. 我一定还是想念一些东西。

In your while loop condition, have you tried switching the order? 在while循环条件下,您是否尝试过切换命令? Like so: 像这样:

while (startTime - currentTime < 2000) {
  // code goes here
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM