Loop from X to Y specified by the user

1

I want to make a cycle that prints the numbers of the range specified by the user, for example:

  • for the values: 2 and 10, it is printed on the div: 2,3,4,5,6,7,8,9, 10.

function loopChecking() {
'use strict';
var numberA = document.getElementById("numberA").value,
    numberB = document.getElementById("numberB").value,
    i = 0,
    result = "";

for (i = numberA; i <= numberB; i += 1) {
    result += i + " ";
}
document.getElementById("numbers").innerHTML = result;
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Loop</title>
    <script src="numbers.js"></script>
</head>
<body>
    <input type="text" id="numberA" />
    <input type="text" id="numberB" />
    <input type="submit" value="Show" onclick="loopChecking()" />
    <div id="numbers"></div>  
</body>
</html>

PS:

  • source
  • I recommend not running, it is looping.
asked by GDP 28.11.2017 в 12:06
source

1 answer

2

The value of input is going to be a value of type String , you must convert it to numerical values to be able to operate with them as numbers.

Look at this example.

I use the parseInt method to convert the values from input to integers.

Then I check that the result of both has been a correct numerical value before continuing using the function isNaN .

function loopChecking() {
'use strict';
var numberA = parseInt(document.getElementById("numberA").value,10),
    numberB = parseInt(document.getElementById("numberB").value,10),
    i = 0,
    result = "";
// Comprobamos que sean valores numéricos correctos
if (isNaN(numberA) || isNaN(numberB)) return;

for (i = numberA; i <= numberB; i += 1) {
    result += i + " ";
}
document.getElementById("numbers").innerHTML = result;
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Loop</title>
    <script src="numbers.js"></script>
</head>
<body>
    <input type="text" id="numberA" />
    <input type="text" id="numberB" />
    <input type="submit" value="Show" onclick="loopChecking()" />
    <div id="numbers"></div>  
</body>
</html>
    
answered by 28.11.2017 / 12:13
source