Reputation: 67
I have a number guesser but it doesn't work. There are a few exceptions and there are a few things undefined. Hopefully some of you is able to help me to fix this. My code:
var input = document.getElementById("input").value;
function newrandom() {
var number = Math.floor(100*Math.random());
}
function check() {
if (input < number) {
document.getElementById("uitslag").innerHTML = 'Het is hoger';
document.getElementById("uitslag").style.color = "red";
}
else if (input > number) {
document.getElementById("uitslag").innerHTML = 'Het getal is lager';
document.getElementById("uitslag").style.color = "red";
}
else (input == number) {
document.getElementById("uitslag").innerHTML = 'Juist! Het getal was' +number;
document.getElementById("uitslag").style.color = "green";
newrandom();
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Raad het getal</title>
<script src="rader.js"></script>
</head>
<body onload="newrandom();">
<h2>Raad het getal!</h2>
<h3>Het getal is tussen de 0 en 100</h3>
<label for="input">Your number: </label><input type="text" value="" id="input">
<button id="check" onclick="check()">Check!</button>
<button id="new" onclick="newrandom()">New random</button></br>
<p id="uitslag"></p>
</body>
</html>
UPDATE The comment section helped me out and I got it working. There were some few typos and errors and got them fixed! Thank you for your help The code:
var input = document.getElementById("input").value;
function newrandom() {
number = Math.floor(100*Math.random());
}
function check() {
if (input == number) {
document.getElementById("uitslag").innerHTML = 'Juist! Het getal was' +number;
document.getElementById("uitslag").style.color = "green";
}
else {
document.getElementById("uitslag").style.color = "red";
if (input < number) {
document.getElementById("uitslag").innerHTML = 'Het is hoger';
}
else {
document.getElementById("uitslag").innerHTML = 'Het getal is lager';
}
}
}
newrandom();
Upvotes: 0
Views: 118
Reputation: 1142
You have missed the if after last else. Put it there and it should work.
var input = document.getElementById("input").value;
function newrandom() {
number = Math.floor(100*Math.random());
}
function check() {
if (input < number) {
document.getElementById("uitslag").innerHTML = 'Het is hoger';
document.getElementById("uitslag").style.color = "red";
}
else if (input > number) {
document.getElementById("uitslag").innerHTML = 'Het getal is lager';
document.getElementById("uitslag").style.color = "red";
}
else if (input == number) {
document.getElementById("uitslag").innerHTML = 'Juist! Het getal was' +number;
document.getElementById("uitslag").style.color = "green";
}
}
newrandom();
Also you could've write the program as below. lot less and clean code.
var input = document.getElementById("input").value;
function newrandom() {
number = Math.floor(100*Math.random());
}
function check() {
if (input == number) {
document.getElementById("uitslag").innerHTML = 'Juist! Het getal was' +number;
document.getElementById("uitslag").style.color = "green";
}
else {
document.getElementById("uitslag").style.color = "red";
if (input < number) {
document.getElementById("uitslag").innerHTML = 'Het is hoger';
}
else {
document.getElementById("uitslag").innerHTML = 'Het getal is lager';
}
}
}
newrandom();
For better readability you can follow the lower camel case for the functions/variables name. Ex, newRandom()
instead of newrandom()
.
Upvotes: 1
Reputation: 122936
You could've translated your code (je had de code kunnen vertalen). Don't use inline handling ('onclick' etc); it's unsafe and spawns a new js interpreter.
Anyway, there are many ways to resolve this, here's one of them. Use it as you please. Try studying ES6, it's here to stay.
// use an anonymous method to avoid polluting the global namespace
( () => {
// not too many possibilities for development purposes
let someRandomNumber = Math.floor(1 + Math.random() * 10);
const result = document.querySelector("#result");
const guessResult = {
n: 0,
get result() { return this.n > 3
? "Amazing, you guessed it (took a while though ;)!"
: "Amazing, you guessed it - that was quick!";
},
};
// add a click handler to the button
document.querySelector("#check").addEventListener("click", guessMe);
function guessMe(evt) {
// + tries converting the input to a Number
const guessedValue = +document.querySelector("#val").value;
const guessed = guessedValue === someRandomNumber;
guessResult.n += 1;
// report result
result.innerHTML = isNaN(guessedValue) || guessedValue > 9 || guessedValue < 1
? "Invalid value, try again"
: guessed
? `${guessResult.result}. We created a new number to guess now`
: "Sorry, try again";
// redo the number if the user guessed right
if (guessed) {
someRandomNumber = Math.floor(1 + Math.random() * 10);
guessResult.n = 0;
}
}
} )();
<h2>Guess a number between 1 and 10</h2>
<label for="val">Your number:</label>
<input type="number" id="val" min="1" max="9">
<button id="check">Check!</button>
<p id="result"></p>
Upvotes: 0
Reputation: 1
I have removed errors and below is the code:
var input;
var number;
function newrandom() {
number = Math.floor(100*Math.random());
}
function check() {
input = document.getElementById("input").value;
if (input < number) {
document.getElementById("uitslag").innerHTML = 'Het is hoger';
document.getElementById("uitslag").style.color = "red";
}
else if (input > number) {
document.getElementById("uitslag").innerHTML = 'Het getal is lager';
document.getElementById("uitslag").style.color = "red";
}
else if (input == number) {
document.getElementById("uitslag").innerHTML = 'Juist! Het getal was' +number;
document.getElementById("uitslag").style.color = "green";
newrandom();
}
}
Hope this solves your problem. Let me know if you have any queries.
Upvotes: 0
Reputation: 1
You should define number variable as global like "var input = ...", otherwise you can't access number variable.
Upvotes: 0
Reputation: 1513
Here's working solution -
var number = 0;
function newrandom() {
number = Math.floor(100 * Math.random());
}
function check() {
input = document.getElementById("input").value;
console.log(input, number);
if (input < number) {
document.getElementById("uitslag").innerHTML = 'Het is hoger';
document.getElementById("uitslag").style.color = "red";
} else if (input > number) {
document.getElementById("uitslag").innerHTML = 'Het getal is lager';
document.getElementById("uitslag").style.color = "red";
} else {
document.getElementById("uitslag").innerHTML = 'Juist! Het getal was' + number;
document.getElementById("uitslag").style.color = "green";
newrandom();
}
}
newrandom();
<h2>Raad het getal!</h2>
<h3>Het getal is tussen de 0 en 100</h3>
<label for="input">Your number: </label><input type="text" value="" id="input">
<button id="check" onclick="check()">Check!</button>
<button id="new" onclick="newrandom()">New random</button><br/>
<p id="uitslag"></p>
Upvotes: 0