所以,当我在 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"
开始,这是真的;然后在下一个循环中,您将附加 1
到start_id
字符串,给我们"201" < "30"
。这是一个字符串比较,所以它也是正确的。然后"2011" < "30"
,这也是事实。等等。
使用数字可以纠正这个问题。
关于Javascript while循环卡住页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28250150/