javascript - 在包括 $get (jQuery) 的 for 循环中填充一个数组 - i 没有增加
问题描述
我想收集一个谷歌页面的所有图片网址。使用 $get 函数,我设法使用 console.log() 列出了我的控制台中的所有 URL,但是如果我尝试在一个数组中获取 URS,我就会遇到问题,即“i”不会增加;它具有最后一个 URL 的数量,这意味着:200。Tahts 我的代码:
function getUrls2(){
var imgArray = ['1','2'];
var imgUrl = '';
var i = 0;
var imagesDiv = document.getElementsByClassName('rg_bx');
for (i = 0;i < imagesDiv.length; i++){
var imgHref = imagesDiv[i].querySelectorAll('a')[0].href;
$.get(imgHref, null, function(text){
imgUrl = text.split('</script><title>Google')[1].split('\"')[1];
if (imgUrl && imgUrl.includes('http')){
console.log(i+'------>'+imgUrl);
imgArray.push = (imgUrl);
console.log(imgArray[i]);
}
});
};
};
(在该行
var imgHref = imagesDiv[i].querySelectorAll('a')[0].href;
'i' 具有正确的值,但在 $get - 函数中,'i' 始终为 200。)
控制台提供以下输出:
200-----> https://i1.wp.com/www.littlebighero.ch/wp-content/uploads/2018/01/IMG_3206-e1515821215393-768x1024.jpg?resize=525%2C700&ssl=1 Scratchpad /1:110:19
未定义 Scratchpad/1:113:19
200-----> https://i0.wp.com/www.littlebighero.ch/wp-content/uploads/2018/01/IMG_3212-e1515821270358-768x1024.jpg?resize=525%2C700&ssl=1 Scratchpad /1:110:19 未定义 Scratchpad/1:113:19
200-----> https://i.ytimg.com/vi/e8bXuWe0vlk/maxresdefault.jpg Scratchpad/1:110:19 未定义 Scratchpad/1:113:19
等等...
解决方案
i
在闭包中使用它之前制作一个副本:
function getUrls2(){
var imgArray = ['1','2'];
var imgUrl = '';
var _i = 0;
var imagesDiv = document.getElementsByClassName('rg_bx');
for (_i = 0; _i < imagesDiv.length; _i++){
var i = _i;
var imgHref = imagesDiv[i].querySelectorAll('a')[0].href;
$.get(imgHref, null, function(text){
imgUrl = text.split('</script><title>Google')[1].split('\"')[1];
if (imgUrl && imgUrl.includes('http')){
console.log(i+'------>'+imgUrl);
imgArray.push = (imgUrl);
console.log(imgArray[i]);
}
});
};
};
推荐阅读
- ios - 无法单击自定义 UICollectionViewCell 内容
- node.js - 使用 multer 发送状态和文件
- tensorflow - Tensorflow - 训练亚当
- c - 什么是形式参数中的默认存储类
- azure - 如何在 VSTS 中部署 azure 函数应用代码和 ARM 模板
- r - 什么是 dplyr rowwise() 的 Plyr 版本
- azure - 如何使用 Terraform 将 VM 添加到 Azure 中的负载均衡器?
- sql - 我不知道如何创建这个 sql 查询
- php - 格式化 PHP 数组以生成 JSON 数组,而不是对象
- mysql - 按列 id 选择行,如果为 null,则包括包含另一列中相同值的行