Javascript while循环冻结页面

时间:2015-01-31 09:34:35

标签: 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;
    }
}

1 个答案:

答案 0 :(得分:2)

输入的值总是字符串,在使用它们之前必须将它们转换为Numbers,否则,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"开始,这是真的;然后在下一个循环中,您将追加 1添加到start_id字符串,为我们提供"201" < "30"。这是一个字符串比较,所以它也是如此。然后是"2011" < "30",这也是事实。等等。

使用数字可以纠正这一点。