Reputation: 21
I generate a random number with an interval and then I check if the number chooses by the user is the same, but it always returns false
const checkButton = document.getElementById("checkButton");
var rndNumber = RandomNumberGenerator();
checkButton.onclick = CheckNumber;
console.log("rndNumber", rndNumber);
function CheckNumber(rndNumber) {
var numberChoosed = document.getElementById("numberChoosed").value;
console.log("rndNumber", rndNumber)
console.log("numberChoosed", numberChoosed);
if (numberChoosed == rndNumber) {
console.log("true");
} else {
console.log("False");
}
}
function RandomNumberGenerator() {
var min = document.getElementById("bottomNumber").value;
var max = document.getElementById("topNumber").value;
return Math.round(Math.random() * (max - min) + min);
}
<button type="button" id="checkButton">Click</button>
<input id="numberChoosed" />
<input id="bottomNumber" value="1"/>
<input id="topNumber" value="110"/>
Upvotes: 0
Views: 344
Reputation: 84
U have done a small mistake , You have saved random value on variable called rndNumber , and you are passing same variable in button click function argument . scope of variable is getting affected , rndNumber in button click function returns event object
pls remove rndNumber
from function CheckNumber(rndNumber) {
attaching jsfiddle also
https://jsfiddle.net/v9d1fqex/
Upvotes: 0
Reputation: 171
You are using a wrong rndNumber value. Parameter passed in CheckNumber method is not the rndnumber. Try creating the rnd number inside the CheckNumber method :
const checkButton = document.getElementById("checkButton");
checkButton.onclick = CheckNumber;
function CheckNumber() {
var numberChoosed = document.getElementById("numberChoosed").value;
var rndNumber = RandomNumberGenerator();
console.log("rndNumber", rndNumber);
console.log("rndNumber", rndNumber)
console.log("numberChoosed", numberChoosed);
if (Number(numberChoosed) == Number(rndNumber)) {
console.log("true");
} else {
console.log("False");
}
}
function RandomNumberGenerator() {
var min = document.getElementById("bottomNumber").value;
var max = document.getElementById("topNumber").value;
return Math.round(Math.random() * (max - min) + min);
}
<button type="button" id="checkButton">Click</button>
<input id="numberChoosed" />
<input id="bottomNumber" value="1"/>
<input id="topNumber" value="110"/>
Upvotes: 1
Reputation: 178403
Remove the rndNumber
from function CheckNumber(rndNumber) {
because that is actually the click event on the checkButton
Also a good idea to cast to number since .value
is a string.
The ==
will cast for you but it is no longer up to you then
const checkButton = document.getElementById("checkButton");
var rndNumber = RandomNumberGenerator();
checkButton.onclick = CheckNumber;
console.log("rndNumber", rndNumber);
function CheckNumber() {
var numberChoosed = document.getElementById("numberChoosed").value;
console.log("rndNumber", rndNumber)
console.log("numberChoosed", numberChoosed);
console.log(+numberChoosed === +rndNumber); // cast to number
}
function RandomNumberGenerator() {
var min = document.getElementById("bottomNumber").value;
var max = document.getElementById("topNumber").value;
return Math.round(Math.random() * (max - min) + min);
}
<button type="button" id="checkButton">Click</button>
<input id="numberChoosed" />
<input id="bottomNumber" value="1"/>
<input id="topNumber" value="110"/>
Upvotes: 2