如何访问下一个上一页的博客帖子链接列表

时间:2017-09-14 11:20:01

标签: javascript json blogger

我有简单的博客json feed

<script type='text/javascript'>
function mycallback(json) {
for (var i = 0; i < json.feed.entry.length; i++) {
  for (var j = 0; j < json.feed.entry[i].link.length; j++) {
    if (json.feed.entry[i].link[j].rel == 'alternate') {
      var postUrl = json.feed.entry[i].link[j].href;
      break;
    }
  }
  var postTitle = json.feed.entry[i].title.$t;
  var item = '<ul><li><a href=' + postUrl + '>' + postTitle + '</a></li></ul>'; 
  document.write(item);
}
}
</script>
<button type="button">Prev</button>
<button type="button">Next</button>
<h2>Recent Post</h2>
<script src='https://techtovillage.blogspot.com/feeds/posts/default?orderby=published&max-results=1000&alt=json-in-script&callback=mycallback'></script>

此代码显示我的总帖子列表。 如何将所有帖子链接划分为5个链接列表并使用下一个上一个按钮访问所有帖子链接

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是使用jQuery分页库,例如这个http://flaviusmatis.github.io/simplePagination.js/。它创造了一个分页甚至风格。在本课题(https://stackoverflow.com/a/20896955/1679286)中,如果项目页面不够清晰,则会更详细地解释用法。

这里有一个迷你演示(它是如何工作的)

&#13;
&#13;
var listInfo = {
  itemsOnPage:4,
  items:[]
 };

function mycallback(json) {
  var tableContent = "";

  listInfo.itemsCount = json.feed.entry.length

  for (var i = 0; i < listInfo.itemsCount; i++) {
    var postTitle = json.feed.entry[i].title.$t;
    for (var j = 0; j < json.feed.entry[i].link.length; j++) {
      if (json.feed.entry[i].link[j].rel === 'alternate') {
        var postUrl = json.feed.entry[i].link[j].href;
        break;
      }
    }
    tableContent += '<tr><td><a href=' + postUrl + '>' + postTitle + '</a></td></tr>'; 
  }
  
  $("#recentPost").html(tableContent);
  listInfo.items = $("#recentPost tr");
  
  console.info(listInfo)
  $("#pagination").pagination({
      items: listInfo.itemsCount,
      itemsOnPage: listInfo.itemsOnPage,
      cssStyle:"light-theme",
      onPageClick: function(pageNumber) {
            var from = listInfo.itemsOnPage * (pageNumber - 1);
            var to = from + listInfo.itemsOnPage;
            listInfo.items.hide()
                 .slice(from, to).show();
        }
  })
  .pagination('selectPage', 1);

}


$.ajax({
    url: "https://techtovillage.blogspot.com/feeds/posts/default?orderby=published&max-results=16&alt=json-in-script",
    jsonp: "callback",
    dataType: "jsonp", 
    success: function( response ) {
        mycallback(response);
    }
});
&#13;
<link href="https://rawgit.com/flaviusmatis/simplePagination.js/master/simplePagination.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rawgit.com/flaviusmatis/simplePagination.js/master/jquery.simplePagination.js"></script>


<h2>Recent Post</h2>
<table id="recentPost">
</table>
<div id="pagination"></div>
&#13;
&#13;
&#13;

可选 另一个不是100%保存的解决方案,因为帖子的顺序可能会更改,但不会使用google参考https://developers.google.com/gdata/docs/2.0/reference#Queries中提到的查询参数start-index加载所有帖子

创建此链接:
https://techtovillage.blogspot.com/feeds/posts/default?orderby=published&max-results=5&start-index=1&alt=json-in-script&callback=mycallback
并调整代码以更改为仅加载当前帖子,使用Ajax调用(jQuery JSONP等),以便start-index递增/递减5,具体取决于单击的按钮/链接