因此,当我在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;
}
}
答案 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"
,这也是事实。等等。
使用数字可以纠正这一点。