Filippo Carigi
Filippo Carigi

Reputation: 21

Comparing number always return false

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

Answers (3)

Praveen Kumar T
Praveen Kumar T

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

Sonia Aguilar
Sonia Aguilar

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

mplungjan
mplungjan

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

Related Questions