-2

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";
                    }
                }
            }
Dawid
  • 3
  • 1

1 Answers1

0

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";
        }
    }
}
skara9
  • 4,042
  • 1
  • 6
  • 21