我想保存多个图像的URL(src)但由于某种原因,我的代码没有完成工作。
forEach
返回一个图像数组,因此逻辑上(或者我认为).attr('src')
循环应记录单个图像(如果我添加function fetchURL() {
let imgURLs = [],
imgs = $('img');
imgs.forEach(img => {
imgURLs.push(img.attr('src'));
});
console.log(imgURLs);
}
,则记录URL)。但是,这不起作用。为什么呢?
以下是代码的相关部分:
$search = "article awesome";
$search = preg_replace("#\s+#", '%', $search);
答案 0 :(得分:2)
请改用:
var imgs = document.getElementsByTagName("img");
var imgSrcs = [];
for (var i = 0; i < imgs.length; i++) {
imgSrcs.push(imgs[i].src);
}
console.log(imgSrcs);
<img src="https://www.nationalgallery.org.uk/server.iip?FIF=/fronts/N-6600-00-000037-WZ-PYR.tif&CNT=1&JTL=1,0">
<img src="https://www.nationalgallery.org.uk/server.iip?FIF=/fronts/N-6600-00-000037-WZ-PYR.tif&CNT=1&JTL=1,0">
<img src="https://www.nationalgallery.org.uk/server.iip?FIF=/fronts/N-6600-00-000037-WZ-PYR.tif&CNT=1&JTL=1,0">
答案 1 :(得分:1)
forEach
是一个javascript本机函数,而$('img')
返回一个jQuery对象。
如果您想使用它,请使用$('img').toArray();
,它将适用于forEach。
其次将imgURLs.push(img.attr('src'));
更改为imgURLs.push($(img).attr('src'));
,因为vanilla javascript没有attr
function fetchURL() {
let imgURLs = [],
imgs = $('img').toArray();
imgs.forEach(img => {
imgURLs.push($(img).attr('src'));
});
console.log(imgURLs);
}
fetchURL();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img src="sdfsdf" />
<img src="32442sdf" />
<img src="sdfs343sdfds" />
答案 2 :(得分:0)
之前我没有使用forEach
但是在jquery中你可以使用.each()
function fetchURL() {
var imgURLs = [],
imgs = $('img');
imgs.each(function(){ // or $.each(imgs , function(){
var This_Src = $(this).attr('src');
imgURLs.push(This_Src);
});
console.log(imgURLs);
}