2014-02-23 41 views
1

我想做一个简单的JavaScript猜谜游戏,我的for循环不断跳过!这里是越来越跳过我的代码的一部分:为循环越过跳过javascript

for (i = 0; i === tries; i += 1) { 
    isSkipped = false; 
    var guessedNumber = prompt("Guess your number now."); 

    console.log("User guessed number " + guessedNumber); 

    //check if number is correct 
    if (guessedNumber === numberToGuess) { 
     confirm("Hooray, you have guessed the number!"); 
     break; 
    } else if (guessedNumber > numberToGuess) { 
     confirm("A little too high..."); 
    } else { 
     confirm("A little too low..."); 
    } 
} 

,这里是完整的代码:

//declaring variables 
var numberToGuess; 
var tries; 
var i; 
var isSkipped = true; 

var confirmPlay = confirm("Are you ready to play lobuo's guessing game? The number for you to guess will be a number ranging from 1 to 25."); //does the user want to play? 

if (confirmPlay === true) { 
    console.log("User wants to play"); 
} else { 
    window.location = "http://lobuo.github.io/pages/experiments.html"; 
} //if user wants to play, let them play, else go to website homepage 

numberToGuess = Math.floor((Math.random() * 25) + 1); //sets computer-generated number 

tries = prompt("How many tries would you like?"); //gets amount of tries 
tries = Math.floor(tries); //converts amount of tries to integer from string 

for (i = 0; i === tries; i += 1) { 
    isSkipped = false; 
    var guessedNumber = prompt("Guess your number now."); 

    console.log("User guessed number " + guessedNumber); 

    //check if number is correct 
    if (guessedNumber === numberToGuess) { 
     confirm("Hooray, you have guessed the number!"); 
     break; 
    } else if (guessedNumber > numberToGuess) { 
     confirm("A little too high..."); 
    } else { 
     confirm("A little too low..."); 
    } 
} 

if (isSkipped === true) { 
    console.log("Oh no! The for loop has been skipped!"); 
} 

如果您需要任何进一步的细节,只问。

+4

什么,这是对'i + = 0' ??? – elclanrs

+0

oops ...我修正了这个问题,但还是一无所获......它应该是i + = 1 – lobuo

+0

只需使用i ++;除了'我===试''不好迭代! – goseo

回答

0

当你写:

for (i = 0; i === tries; i += 0) { 

循环,只要重复条件i === tries为真。例如,如果tries为3,则在第一次迭代中该条件不成立,并且循环立即结束。

你应该写:

for (i = 0; i < tries; i++) { 
+0

这有帮助。感谢:D – lobuo

0

此外,您需要使用parseInt()功能在用户的输入。

var guessedNumber = parseInt(prompt("Guess your number now."), 10); 

代替

var guessedNumber = prompt("Guess your number now."); 
+0

为什么downvote,他检查类型也'猜测数字=== numberToGuess'? –

+1

@SumanBogati因为类型无关紧要,因为无论'Math.floor'后面的数字如何,它都是数字。 –

+0

@ Qantas94Heavy - ? –

2

不应该的是这样的?:

for (i = 0; i < tries; i += 1) { 
+0

您可能想解释两者之间的区别,并提供编辑的代码。 –

+0

哎呀...没有注意到你我做了<尝试。这解决了它。谢谢:D – lobuo

+1

真的吗?我进入了3次尝试,它的工作 – juvian