【发布时间】:2015-05-27 12:37:12
【问题描述】:
我有一些代码当前循环浏览博客上的帖子,并将它们作为列表项内的图像输出为带有链接和标题文本(如果存在)的图像。这很好用,但是当我运行代码并且有照片集帖子时,每个图像和标题都会按照照片博客帖子循环。
(因此,如果照片集中有 10 张图像和 1 个标题,则每个图像和标题都会输出 10 次)。
这是我的原始代码:
// get tumblr posts and embed them.
var postContent = $('#tumblr-posts');
var getPosts = {};
getPosts.get = function(){
var offSet = href * 10;
$.ajax({
url:"http://api.tumblr.com/v2/blog/jessicaharby.tumblr.com/posts?limit=11",
dataType: 'jsonp',
data: {
api_key: _site._apiKey,
tag: 'news',
offset: offSet
},
success: function(results){
var i = 0;
while (i < results.response.posts.length) {
var type = results.response.posts[i].type;
var photoset = results.response.posts[i].photoset_layout;
if (type == "photo") {
var photos = results.response.posts[i].photos;
var linkURL = results.response.posts[i].post_url;
var caption = results.response.posts[i].caption;
for (var j = 0; j < photos.length; j++) {
var imgURL;
if (photos[j].alt_sizes[1]) {
imgURL = photos[j].alt_sizes[1].url
}else{
continue;
}
postContent.append("<li><img src=" + imgURL + " /><p>" + caption + "</p></li>");
}
i++;
}
console.log(results.response);
postContent.find('a').attr('target','_blank');
}
});
}
getPosts.get();
我一直在尝试编写一个 else if 语句来捕获照片集的帖子。它需要改进,但看起来像这样:
else if(photoset != null) {
for (var k = 0; k < photos.length; k++) {
var imgURL;
if (photos[k].alt_sizes[1]) {
imgURL = photos[k].alt_sizes[1].url
}else{
continue;
}
postContent.append("<li><img src=" + imgURL + " /></li>");
}
postContent.append("<li><p>" + caption + "</p></li>");
}else{
console.log('some error')
}
所以它应该在帖子底部吐出所有图像和一个标题(所以我想我需要将这些都放在一个列表项中)。我只是不是 100% 确定如何完成循环。
另一个问题是,如果我编写一个 if/else 如果我认为我当前的代码第一个 if 为真,那么帖子可能会重复,或者 else if 可能会被忽略。
我有两个可以试验/分叉等的小提琴;
1) http://jsfiddle.net/lharby/bLveggwk/1/ 循环浏览所有帖子
2) http://jsfiddle.net/lharby/bLveggwk/3/ 只循环浏览照片集的帖子。
很抱歉,这不是最简洁的问题。如果我不清楚,如果有帮助,我可以画一幅画!
编辑
决定做图:
【问题讨论】:
-
澄清一下,您想在一个帖子中输出照片集中的所有照片,然后是标题?
-
是的,照片帖子应被视为正常。抱歉,如果不是很清楚@mikedidthis。
-
@mikedidthis 毕竟我最终制作了一张图片(希望每个白色块都应该是一个 LI。i.imgur.com/OqLu3nd.png
标签: javascript jquery ajax loops tumblr