Manievat - 1 year ago 51

HTML Question

I made a random number guessing game in which you can determine the maximum value and the minimum value. I checked my entire code twice but can't seem to find a solution to why it won't work. I made this script linked to a HTML file that explains the

`document.getElementById("randNum").innerHTML`

I also want to say I am very new to coding so I might've overlooked something simple. Anyways, here's my code.

`var max = prompt("Max guessing number?");`

if (max <= 2) {

document.getElementById("randNum").innerHTML = "Invalid entry";

} else {

var min = prompt("What's the smallest number you can guess?");

if (min >= (max - 1) || min <= 0) {

document.getElementById("randNum").innerHTML = "Invalid entry";

} else {

number = Math.floor(Math.random() * (max - min + 1) + min);

guess = prompt("What's your guess?");

if (guess > max || guess < min) {

document.getElementById("randNum").innerHTML = "Invalid entry";

} else if (guess == number) {

document.getElementById("randNum").innerHTML = "Good job! You guessed the number!";

} else {

document.getElementById("randNum").innerHTML = "Wrong! The answer was " + number + "!";

}

}

}

EDIT: I changed how the random number generator works but I'm still getting an error. And to add more detail, the page says Invalid entry

Answer Source

Two issues:

The data type returned by `prompt`

is string, so calculations might go wrong if you don't explicitly convert it to number. You can do this by applying the unitary `+`

operator, like `+prompt('....');`

Secondly, the way to get random numbers between *min* and *max* should be different. Change this:

```
number = Math.floor((Math.random() * max) + min);
```

to:

```
number = Math.floor(Math.random() * (max - min + 1) + min);
```

The corrected code:

```
var max = +prompt("Max guessing number?");
if (max <= 2) {
document.getElementById("randNum").innerHTML = "Invalid entry";
} else {
var min = +prompt("Wat is het kleinste nummer dat je kan raden?");
if (min >= (max - 1) || min <= 0) {
document.getElementById("randNum").innerHTML = "Invalid entry";
} else {
number = Math.floor(Math.random() * (max - min + 1)) + min;
console.log(min, max, number, (max - min + 1));
guess = +prompt("What's your guess?");
if (guess > max || guess < min) {
document.getElementById("randNum").innerHTML = "Invalid entry";
} else if (guess == number) {
document.getElementById("randNum").innerHTML = "Good job! You guessed the number!";
} else {
document.getElementById("randNum").innerHTML = "Wrong! The answer was " + number + "!";
}
}
}
```

`<div id="randNum" ></div>`