JS:一旦我的callback()函数中有数据,我该如何分页

时间:2019-03-31 20:10:25

标签: javascript pagination

我能够从API接收数据,并且我能够单独使用js对测试数据进行分页。
但是,我无法将它们合并在一起,从而无法从callback()函数获得分页的结果。

#Not my code, but I have tested it, works nicely.
var current_page = 1;
var records_per_page = 2;

var objJson = [
{ adName: "AdName 1"},
{ adName: "AdName 2"},

];
function prevPage(){
   if (current_page > 1) {
       current_page--;
       changePage(current_page);
   }
}

function nextPage(){
   if (current_page < numPages()) {
       current_page++;
       changePage(current_page);
   }
}

function changePage(page){
  var btn_next = document.getElementById("btn_next");
  var btn_prev = document.getElementById("btn_prev");
  var listing_table = document.getElementById("listingTable");
  var page_span = document.getElementById("page");


  if (page < 1) page = 1;
  if (page > numPages()) page = numPages();

  listing_table.innerHTML = "";

  for (var i = (page-1) * records_per_page; i < (page *records_per_page); i++) {
      listing_table.innerHTML += objJson[i].adName + "<br>";
  }
  page_span.innerHTML = page;

  if (page == 1) {
    btn_prev.style.visibility = "hidden";
  } else {
    btn_prev.style.visibility = "visible";
  }

if (page == numPages()) {
    btn_next.style.visibility = "hidden";
} else {
    btn_next.style.visibility = "visible";
}
  }

 function numPages()
{
  return Math.ceil(objJson.length / records_per_page);
 }

 window.onload = function() {
   changePage(1);
 };

下面是从API获取数据的callback()函数:

 var glo_var;
 function callback(data){
     glo_var = data;
 }

 function codeAddress(address) {
   geocoder.geocode({ 'address': address}, 
      function(response, status) {
      if(status == 'OK'){
         var senddata = $.get('/myurl',{params}, function (data){ callback(data) });
       }
   });
 }

现在,将它们合并在一起时遇到问题。我所能做的就是将数据存储在glo_var中,然后在changePage()中使用它,就像在上面的代码块中使用var objJson一样。显然,我的callback()函数将简化为用于保存JSON数据的函数。这是正确的方法吗?
P.S-我知道我可以使用Jquery分页插件,我只是想学习js,在其中非常差。

编辑:HUURRRAAAHHH我做到了!!我将changePage()放入callback()并使用了嵌套函数。

0 个答案:

没有答案