Javascript做循环不停止

时间:2017-05-28 16:44:47

标签: javascript html html5 forms loops

我正在尝试创建一个计算,以获取起始编号,结束编号和步骤编号,以按步骤值显示开始和结束计数之间的所有偶数。 我的循环逻辑似乎有问题,因为它不会停止和崩溃。

{{1}}

4 个答案:

答案 0 :(得分:1)

我认为你想做的是

sum = start

循环之前。并且

sum += step
循环内的

答案 1 :(得分:0)

问题是代码的第3行。该行即将将var sum推到结果的末尾,但是你正在推动起始变量,这就是循环没有停止的原因

答案 2 :(得分:0)

在循环期间,步骤和开始都没有改变,因此在每次迭代后总和不会改变。

您可以按以下方式更改代码:

=B60+1

您还可以使用FOR循环以更简单的语法实现相同的行为。

答案 3 :(得分:0)

几个问题:

  • 在Chrome中进行测试时,我需要parseInt()这些值以便与他们合作
  • isNaN一次只接受1个参数
  • 在我们的while循环中,我们需要增加总和,例如使用+=sum = sum + step
  • 我们要保存总和,而不是起始值
  • 我们还想检查总和是否有效,甚至数字
  • 此外,while条件设置正确时,while循环可能很难获得迭代,因此您不会进行一次或多次迭代。正如我们所看到的,如果我们没有正确设置,它们可以轻松地无限运行。在这种情况下,我建议尝试for循环

    <!DOCTYPE html>
    <html>
    <body>

    <h2>JFinding all even numbers</h2>

    <p>Please input a starting number, ending number and step number:</p>

    Starting Number: <input id="start">
    Ending Number: <input id="end">
    Step by Number: <input id="step">

    <button type="button" onclick="myFunction()">Submit</button>

    <p id="demo"></p>

    <script>
    function myFunction() {
        var start, end, step, text;
        var result = [];

        // Get the value of the start number with start var
        start = parseInt(document.getElementById("start").value);
        // Get the value of the end number with end var
        end = parseInt(document.getElementById("end").value);
        // Get the value of the step number with step var
        step = parseInt(document.getElementById("step").value);
        console.log('start', start);
        console.log('end', end);
        console.log('step', step);
        // If start, end, or step is Not a Number or step is not even or start is greater than end or step is greater than end or start and step are equal to end
        if (isNaN(start) || isNaN(end) || isNaN(step) || step % 2 !== 0 || start > end || step > end || step === end || start === end) {
            //display text for invalid input
            text = "Input not valid";
            //display text to html page
            document.getElementById("demo").innerHTML = text;
            //else create a loop to find even numbers
        } else { 
            
            for(var i = start; i <= end; i += step){
                if(i % 2 === 0){
                    result.push(i);
                }
            };
            //sent the result to the html page
            document.getElementById("demo").innerHTML = result;
    }
    }
    </script>

    </body>
    </html> 

另请注意,代码要求步骤为偶数:step % 2 !== 0,因此我们获得任何结果的唯一方法是启动数字是否均匀。