将容器div中的元素放入数组-jQuery或JavaScript
我有一个div,其中包含许多Instagram图像,由instafeed.js插件生成。运行插件后,生成的HTML如下所示:将容器div中的元素放入数组-jQuery或JavaScript,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我有一个div,其中包含许多Instagram图像,由instafeed.js插件生成。运行插件后,生成的HTML如下所示: <div id="instafeed"> <a><img /></a> <a><img /></a> <a><img /></a> etc... </div> 等 我试图找到一种方法将这个div的内容加载
<div id="instafeed">
<a><img /></a>
<a><img /></a>
<a><img /></a>
etc...
</div>
等
我试图找到一种方法将这个div的内容加载到一个数组中;我相信最简单的方法就是拿标签,这很好
我对JS和jQuery都缺乏经验,这就是为什么我很难做到这一点,而且我还没有找到任何论坛帖子能够达到我希望达到的效果
到目前为止,我所要做的只是将div的内容加载到一个数组中,然后将其打印回文档,这样(在我看来)应该会将标记添加回HTML中。我尝试使用JavaScript和jQuery,但都没有成功。如果您有任何想法,我将不胜感激:
JS:
var containerDiv=document.getElementById('instafeed');
var pics=containerDiv.getElementsByTagName('img');
控制台日志(pics)//告诉我至少我有一个img数组
对于(变量i=0;i
jQuery:
(如果这段代码完全错了,我真的很抱歉,我真的不太了解jQuery)
$(文档).ready(函数(){
var-pics=[];
$('#instafeed')。查找('img')。每个(函数(){
图片推送($(本));
});
对于(i=0;i
如有任何想法、提示或建议,将不胜感激
编辑:
只是为了给我的问题增加一点背景知识,避免引起更多的混乱
我正试图从一个特定于用户的Instagram订阅源中随机抽取四张图片,以便在网站上显示。instafeed.js可以只提取四张图片,并且可以将图片随机排列,但Instagram本身总是发送四张最新的图片,因此该插件每次只是将相同的四张图片的顺序随机排列
我试图让插件发送每一张图片,这些图片将进入div instafeed。我想从这里将所有包含的图像加载到一个数组中,这样我就可以随机选择四个图像在站点上显示。JQuery代码是正确的。只有你需要的div,你需要把图像
$(document).ready(function() {
var pics = [];
$('#instafeed').find('img').each(function() {
pics.push($(this));
});
for (i = 0; i < pics.length; i++) {
$('div#yourDiv').append(pics[i]);
}
感谢所有在这方面帮助过我的人。事实证明,我的问题源于我在instafeed.js能够从Instagram中提取图像之前试图运行的查询,因此在div中找不到任何内容。我已通过设置超时解决了这一问题 对于任何感兴趣的人,为了防止将来其他人遇到类似的问题,这里是我的完整代码(我肯定这有点不雅观,但我在JS方面还是一个相对的新手)
函数陷阱(){
var-pics=[];
$('div#instafeed')。查找('img')。每个(函数(){
pics.push($(this.attr('src'));
});
减速器(4个,pics);
}
功能减速器(限位,pics){
如果(限制==未定义){
限值=4;
}
var=[];
while(gallery.length<限制){
var j=Math.floor(Math.random()*pics.length);
if(图库索引(图[j])>-1){
继续;
}
图库推送(图[j]);
}
展览图片(画廊);
}
功能显示图片(图库){
对于(变量i=0;i
将此div的内容加载到数组中是什么意思<代码>$(“#instafeed”).find('img')为您提供了一个数组,为什么要将它们放入另一个数组中?您只是想删除链接吗?我在上面的编辑中添加了一些额外的信息。如果服务返回最新的图像,则您无法执行检索更多图片的任务。尝试检索多个最新图像并将其随机化这是一个儿童游戏。为什么不直接执行$('instafeed').find('img').each(function(){$('div#yourDiv').append($(this));})代码>而不是有额外的循环?也许他想在其他时间,而不是立即进行。在这种情况下,我只需执行var pics=$('#instafeed')。查找('img')代码>之后OP可以使用图片。每个-只有一个循环,性能更好他问的答案。否则,OP还没有解释他到底需要什么。我在上面的编辑中添加了一些额外的信息。我真正想要的是一组图像,我可以从中随机选择。为了确保我做得正确,我只希望能够将数组的内容转储到页面中,这样我就知道我的数组包含了我要查找的内容。
$(document).ready(function() {
var pics = [];
$('#instafeed').find('img').each(function() {
pics.push($(this));
});
for (i = 0; i < pics.length; i++) {
console.log(pics[i]);
}
});
$(document).ready(function() {
var pics = [];
$('#instafeed').find('img').each(function() {
pics.push($(this));
});
for (i = 0; i < pics.length; i++) {
$('div#yourDiv').append(pics[i]);
}
$('#instafeed').find('img').each(function() {
pics.push($(this).attr('src'));
});
console.log(pics); // returns an array of src.
function snagImages() {
var pics = [];
$('div#instafeed').find('img').each(function() {
pics.push($(this).attr('src'));
});
reduceGallery(4, pics);
}
function reduceGallery(limit, pics) {
if (limit === undefined) {
limit = 4;
}
var gallery = [];
while (gallery.length < limit) {
var j = Math.floor(Math.random() * pics.length);
if ( gallery.indexOf(pics[j]) > -1) {
continue;
}
gallery.push(pics[j]);
}
displayPics(gallery);
}
function displayPics(gallery) {
for (var i = 0; i < gallery.length; i++) {
document.getElementById('gallery').innerHTML += '<a href="' + gallery[i] + '" title="Gallery Image">' + '<img src="' + gallery[i] + '" alt="Gallery Image" />' + '</a>';
}
}
var userFeed = new Instafeed( {
options
});
userFeed.run();
setTimeout(function() { snagImages() }, 500);