循环冻结页面时的Javascript

循环冻结页面时的Javascript,javascript,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');

因此,当我在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;
    }
}
函数抓取用户(){
var start_id=document.getElementById('start_range');
start\u id=start\u id.value;
var end_id=document.getElementById('end_range');
end_id=end_id.value;
var=document.getElementById(“抓取的用户”);
while(开始\u id<结束\u id){
$.ajax({
url:“php/extract.php”,
键入:“GET”,
数据:{'start\u range':start\u id},
成功:功能(res){
var usernames=res;
如果(!usernames.valueOf()=“”){
用户名=用户名。替换(“
”,“”); .value+=用户名+'\n'; } } }); 起始id+=1; } }
输入值始终是字符串,在使用它们之前必须将它们转换为数字,否则,比较和递增
start\u id
都不会给出预期的结果(以无限循环结束):

假设您的
start\u id
“20”
,而
end\u id
“30”
。您将从
“20”<“30”
开始,这是正确的;然后在下一个循环中,您将
1
附加到
开始id
字符串中,给我们
“201”<“30”
。这是一个字符串比较,因此也是正确的。然后
“2011”<“30”
,这也是正确的。等等


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

页面确实应该“冻结”直到完成。我们讨论了多少次迭代?看起来像是常见的AJAX问题,从回调内部更新
抓取的
,那么我该如何正确执行呢?@elclars:OP没有在成功处理程序中使用任何因循环而异的内容,所以这部分没有问题。(另一方面,进行大量重叠的ajax调用…)请注意,
start\u id
是一个字符串,添加
1
并不能达到OP认为的效果,非常感谢您的回答:)
var start_id = parseInt(document.getElementById('start_range').value,10);
var end_id = parseInt(document.getElementById('end_range').value,10);