0

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. (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.

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". I must still be missing something.

Riley Fitzpatrick
  • 869
  • 2
  • 16
  • 38

1 Answers1

-1

In your while loop condition, have you tried switching the order? Like so:

while (startTime - currentTime < 2000) {
  // code goes here
}
Alex
  • 37
  • 1
  • 5