If i type in my input for example 15 it is reading it as 1 and 5. How can I change it so javascript won't read it like two different values?
function generate() {
var x = document.forms["form"]["firstInput"].value;
var y = document.forms["form"]["secondInput"].value;
if (isNaN(x) || isNaN(y)) {
document.getElementById("errorf").innerHTML =
"Input has to be a number!";
document.getElementById("wynikf").innerHTML = "";
} else if (x > y) {
document.getElementById("wynikf").innerHTML =
"First value can't be lower than second value";
} else if (x == null || x == "" || y == null || y == "") {
document.getElementById("errorf").innerHTML =
"Input can't be empty!";
document.getElementById("wynikf").innerHTML = "";
} else {
for (var counter = x; counter <= y; counter++) {
document.getElementById("result").innerHTML +=
counter + "\n";
}
}
}
You need to convert the value to a number before checking for greater than or less than.
Without converting the strings to numbers, you are just sorting them in alphabetical order
For example:
"15" > "3" // false because '1' comes before '3'
15 > 3 // true because the number 15 is greater than 3
Use Number(value) to convert the values to numbers.
function generate() {
var x = Number(document.forms["form"]["firstInput"].value);
var y = Number(document.forms["form"]["secondInput"].value);
if (isNaN(x) || isNaN(y)) {
document.getElementById("errorf").innerHTML =
"Input has to be a number!";
document.getElementById("wynikf").innerHTML = "";
} else if (x > y) {
document.getElementById("wynikf").innerHTML =
"First value can't be lower than second value";
} else {
for (var counter = x; counter <= y; counter++) {
document.getElementById("result").innerHTML +=
counter + "\n";
}
}
}