Random Number Js Min Max
Solution 1:
The problem is that the value
of input elements are always strings. When you write max.value - min.value
, JavaScript coerces the values to numbers because of the subtraction operator. BUT when you write 0.3 + "8"
the result is "0.38"
instead of "8.3"
. That's why the original code gives strange values, max.value
never gets added but appended.
Here is a possibility how to fix it: coerce the strings into numbers first with the uniary +
operator (or use parseInt):
function genRanNumb() {
var vMin = +min.value;
var vMax = +max.value;
var generated = Math.floor(Math.random()*(vMax - vMin + 1) + vMin);
demo.innerText = generated;
}
<input type="text" id="min">
<input type="text" id="max">
<button id="btn" onclick="genRanNumb()">button</button>
<p id="demo"></p>
Solution 2:
I think the matter is your inputs are text and your random wants int values
The solution is to surrond your variable with parseFloat(yourvariable)
in javascript.
in your case you have :
function genRanNumb() {
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(parseFloat(max.value)-parseFloat(min.value)+1)+parseFloat(min.value));
}
Hope it answer to your question.
For better readability and best compatibility, you should write it like this:
function genRanNumb() {
var max = parseFloat(document.getElementById("max").value,10),
min = parseFloat(document.getElementById("min").value,10);
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(max-min+1)+min);
}
Solution 3:
Alternative to get the random number from min to max
let makeGuess = function(guess){
let min = 1;
let max = 5;
let randomNumber = Math.floor(Math.random() * (max - min + 1)) + min
return guess === randomNumber;
}
console.log(makeGuess(1));
Solution 4:
Your random number logic is correct. You just need to retrieve the values from the textboxes, which are strings, and then parse them as integers.
function genRanNumb() {
var min = parseInt(document.getElementById('min').value, 10);
var max = parseInt(document.getElementById('max').value, 10);
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(max-min+1)+min);
}
<input type="text" id="min">
<input type="text" id="max">
<button id="btn" onclick="genRanNumb()">button</button>
<p id="demo"></p>
Solution 5:
The probleme is your value are string so when you do:
(max.value-min.value+1)+(min.value)
it like to do, for example, 6" + "5"
so "65"
So try it:
<script>
function genRanNumb() {
document.getElementById('demo').innerHTML=Math.floor(Math.random()*(parseInt(max.value-min.value+1))+parseInt(min.value));
}
</script>
Post a Comment for "Random Number Js Min Max"