for-loop - 为什么此代码卡住了并且不起作用(javascript)

标签 for-loop error-handling addeventlistener getelementbyid

这个简单的代码让我发疯。
它不适用于任何浏览器或JSFiddle。该页面无法响应,并被卡住。

https://jsfiddle.net/dckkj4uu/6/

HTML:

<html>
    <head>
        <title>Page Title</title>
    </head>
    <body>
    <p>
    First number:<br>
        <input type="number" id="fir">
        <br>
    Second number:<br>        
        <input type="number" id="sec">
        <br>
    Increment:<br>        
        <input type="number" id="inc">
        <br>        
    </p>
        <button id="btn">Click</button>
    </body>
</html>

JS:
document.getElementById("btn").addEventListener("click", me);


var first = document.getElementById("fir");
var f = first.value;
var second = document.getElementById("sec");
var s = second.value;
var inc = document.getElementById("inc");
var ic = inc.value;

var str = "";

function me(){
    for(var i=f; i<=s; i=i+ic){

        str+=i;

    }
return document.write(str);}

它总是崩溃

编辑: JSlint说没有错误

最佳答案

如果在事件处理程序之外调用initialize'f = first.value',则不会为f分配任何值,因为代码是在加载页面时执行的,而不是在单击Submit按钮之后执行的。 “s”和“ic”也是如此。

这应该可以解决问题:

function me(){
    var f = parseInt(first.value);
    var s = parseInt(second.value);
    var ic = parseInt(inc.value);
    for(var i = f; i <= s; i = i + parseInt(inc.value)) {
        str += i;
    }
    return document.write(str);
}

关于for-loop - 为什么此代码卡住了并且不起作用(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49083924/

相关文章:

error-handling - 如何处理 rust 上的盒装和链式错误?

shell - 忽略setenv命令中的错误,并继续执行csh脚本

node.js - 如果尚未添加监听器并且监听器处理程序是匿名函数,则在 nodeJS 中添加监听器

javascript - 如何在按下按键时更改 div 的值

ios - 通过 for 循环编辑 NSString - iOS

c - 如何使用for循环初始化数组?

php - 如何停止显示敏感错误?

Javascript "keypress"事件不起作用

java - 如何在迭代两个列表时检查字符串相等性?

ios - 仅在 UITableView 中循环遍历 textFields