У меня есть код, который в настоящее время перебирает сообщения в блоге и выводит их как внутри элемента списка в виде изображения со ссылкой и текстом подписи, если он существует. Это отлично работает, но когда я запускаю код и появляются сообщения о фотосете, каждое изображение и подпись зацикливаются в соответствии с сообщениями в фотоблоге.
(Таким образом, если в фотонаборе 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/ проходит только через посты с фотосетами.
Извините, что это не самый аккуратный вопрос. Если не понятно могу сделать рисунок, если поможет!
ИЗМЕНИТЬ
Решил сделать образ: