Javascript while循环卡住页面

标签 javascript

所以,当我在 Firefox 和 google chrome 上运行此函数时,页面一直卡住,我尝试使用 for 循环,但没有按预期工作,有什么想法吗?

谢谢

   function grab_users() {

    var start_id = document.getElementById('start_range');
    start_id = start_id.value;

    var end_id = document.getElementById('end_range');
    end_id = end_id.value;

    var grabbed = document.getElementById('grabbed_users');
    while (start_id < end_id) {
        $.ajax({
            url: "php/extract.php",
            type: 'GET',
            data: {'start_range': start_id},
            success: function(res) {
                var usernames = res;

                if (!usernames.valueOf() == "") {
                    usernames = usernames.replace('</br>', '');
                    grabbed.value += usernames + '\n';
                }
            }
        });
        start_id+=1;
    }
}

最佳答案

输入的值始终是字符串,在使用它们之前必须将它们转换为数字,否则 start_id 的比较和递增不会给出预期的结果(以无限循环结束):

var start_id = parseInt(document.getElementById('start_range').value,10);
var end_id = parseInt(document.getElementById('end_range').value,10);

假设您的start_id"20"和你的end_id"30" 。您将从 "20" < "30" 开始,这是真的;然后在下一个循环中,您将附加 1start_id字符串,给我们"201" < "30" 。这是一个字符串比较,所以它也是正确的。然后"2011" < "30" ,这也是事实。等等。

使用数字可以纠正这个问题。

关于Javascript while循环卡住页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28250150/

相关文章:

javascript - TypeError : Cannot read property 'then' of undefined, 尝试保存播放列表时 react 应用程序错误

javascript - 如何在 Node.js 智能感知中启用 Jasmine 支持

JavaScript 对象数组未正确排序

javascript - 自定义 CSS 和 JS 驱动的导航菜单

javascript - react native : How to set <TextInput/>'s height and width to <View/> container?

javascript - Firebase limitToLast 未定义?

javascript - 如何通过数据属性过滤元素

javascript - 带有 ionic 搜索栏焦点的 ionic 触发模式打开功能 - 单击不起作用

javascript - 事件循环和同步阻塞

javascript - polymer 输入自动完成