我正在做一个猜数字游戏,我想测试变量guess是否大于变量difficultydifficulty已从我的HTML页面获取,并且无法与guess正确比较。

//Initialize variables for player guess, guess counter and previous guesses
var guess = 0;
var guessCount = 0;
var previousGuesses = [];

function startGame() {

	//Calculate difficulty
	var difficulty = document.getElementById("difficulty").value;

	//Calculate secret number
	var secretNumber = Math.floor((Math.random() * difficulty) + 1);

	//Repeats while player has not guessed the secret number
	while (guess != secretNumber) {

		//Checks for Cancel button pressed
		guess = prompt("Enter your guess: ");
		if (guess == null) {
			return;
		}

		//Checks for empty string/no input
		else if (guess == "") {
			alert("Please enter a number");
		}

		//Checks if previously guessed
		else if (previousGuesses.includes(guess)) {
			alert("You have guessed this number before. Please try a different number.");
		}

		else if (guess < 1) {
			alert("Please enter a number between 1-" + difficulty);
		}

		//Checks if guess is higher than secretNumber
		else if (guess > secretNumber) {
			alert("Your guess is too high");
			//Increments guess counter
			guessCount++;
			//Adds the previous guess to previousGuesses
			previousGuesses.push(guess);
		}

		//Checks if guess is lower than secretNumber
		else if (guess < secretNumber) {
			alert("Your guess is too low");
			//Increments guess counter
			guessCount++;
			//Adds the previous guess to previousGuesses
			previousGuesses.push(guess);
		}

		//Checks for correct guess
		else if (guess == secretNumber) {
			//Increments guess counter
			guessCount++;

			//Checks for correct grammar - guesses or guess
			if (guessCount > 1) {
				alert("Congratulations, you guessed the correct number in " + guessCount + " guesses!");
			}
			else {
				alert("Congratulations, you guessed the correct number in " + guessCount + " guess!");
			}
		}

	}
	//Resets variables to play again
	guess = 0;
	guessCount = 0;
	previousGuesses = [];
}
body {
	font-family: sans-serif;
	text-align: center;
	animation: background 10s infinite;
}

h1 {
	margin-top: 48px;
	margin-bottom: 48px;
	animation: heading 10s infinite;
}

button {
	height: 48px;
    width: 250px;
    font-size: 24px;
}
<h1>Guess the Number</h1>

<button onclick="startGame()">Start the Game</button>

<h2>Difficulty</h2>

<select id="difficulty">
  <option value="10">Beginner</option>
  <option value="50">Intermediate</option>
  <option value="100">Hard</option>
</select>


阅读:关键信息

该代码有效,但是我希望发生一些事情:当猜测大于difficulty时,我想打印"Please enter a number between 1-" + difficulty。但是,当我更改此代码时:

else if (guess < 1) {
    alert("Please enter a number between 1-" + difficulty);
}

到这个:

else if (guess < 1 || guess > difficulty) {...}

(编辑:上面的代码是找出猜测是否大于difficulty)

那么发生的是,除了1difficulty和除difficulty之外的所有猜测都由Please enter a number发出警报。

我该如何解决?

最佳答案

您正在比较字符串而不是数字。将您的字符串转换为数字。

else if (parseInt(guess) < 1 || parseInt(guess) > parseInt(difficulty))

更好的方法:输入后直接转换并...
guess = parseInt(prompt("Enter your guess: "));

...将难度值作为数字
var difficulty = parseInt(document.getElementById("difficulty").value);

//Initialize variables for player guess, guess counter and previous guesses
var guess = 0;
var guessCount = 0;
var previousGuesses = [];

function startGame() {

	//Calculate difficulty
	var difficulty = parseInt(document.getElementById("difficulty").value);

	//Calculate secret number
	var secretNumber = Math.floor((Math.random() * difficulty) + 1);

	//Repeats while player has not guessed the secret number
	while (guess != secretNumber) {

		//Checks for Cancel button pressed
		guess = parseInt(prompt("Enter your guess: "));
		if (guess == null) {
			return;
		}

		//Checks for empty string/no input
		else if (guess == "") {
			alert("Please enter a number");
		}

		//Checks if previously guessed
		else if (previousGuesses.includes(guess)) {
			alert("You have guessed this number before. Please try a different number.");
		}

		else if (guess < 1 || guess > difficulty) {

			alert("Please enter a number between 1-" + difficulty);
		}

		//Checks if guess is higher than secretNumber
		else if (guess > secretNumber) {
			alert("Your guess is too high");
			//Increments guess counter
			guessCount++;
			//Adds the previous guess to previousGuesses
			previousGuesses.push(guess);
		}

		//Checks if guess is lower than secretNumber
		else if (guess < secretNumber) {
			alert("Your guess is too low");
			//Increments guess counter
			guessCount++;
			//Adds the previous guess to previousGuesses
			previousGuesses.push(guess);
		}

		//Checks for correct guess
		else if (guess == secretNumber) {
			//Increments guess counter
			guessCount++;

			//Checks for correct grammar - guesses or guess
			if (guessCount > 1) {
				alert("Congratulations, you guessed the correct number in " + guessCount + " guesses!");
			}
			else {
				alert("Congratulations, you guessed the correct number in " + guessCount + " guess!");
			}
		}

	}
	//Resets variables to play again
	guess = 0;
	guessCount = 0;
	previousGuesses = [];
}
<h1>Guess the Number</h1>

<button onclick="startGame()">Start the Game</button>

<h2>Difficulty</h2>

<select id="difficulty">
  <option value="10">Beginner</option>
  <option value="50">Intermediate</option>
  <option value="100">Hard</option>
</select>

09-07 21:04