Javascript jQuery如何在递归函数中按值递增变量

Javascript jQuery如何在递归函数中按值递增变量,javascript,jquery,json,variables,arguments,Javascript,Jquery,Json,Variables,Arguments,我有一个在document.ready中调用的JS函数。目的是当它滚动到底部窗口时,它将从JSON API加载更多内容 API具有参数偏移和限制。偏移量控制要查看的结果子集。例如,20-40将是offset=20,限制控制一次可以查看的数量 我想我应该使用一个递归函数来实现这一点,该函数在用户每次进入窗口底部时都会使用window.scroll调用自己。一旦它们到达底部,它会将偏移量每次增加20,然后再次运行该函数 问题:我似乎无法让它将变量增加20以使其工作。想法 function getDa

我有一个在document.ready中调用的JS函数。目的是当它滚动到底部窗口时,它将从JSON API加载更多内容

API具有参数偏移和限制。偏移量控制要查看的结果子集。例如,20-40将是offset=20,限制控制一次可以查看的数量

我想我应该使用一个递归函数来实现这一点,该函数在用户每次进入窗口底部时都会使用window.scroll调用自己。一旦它们到达底部,它会将偏移量每次增加20,然后再次运行该函数

问题:我似乎无法让它将变量增加20以使其工作。想法

function getData(offset) {
var jsonCallback = "&jsoncallback=?";
//var offset = 20;
//var offset += 20;
var limit = 20;

var characterURL = "http://api.example.com/character&byId=" + characterID + "&offset=" + offset + "&limit=" + limit;    

$.getJSON(characterURL + jsonCallback, function(data) {
    for (i=0; i < (data.data.results).length; i++) {

        var $characterUl = $("<ul>");
        $characterUl.appendTo("#characterComics");
        $("<li>").text(data.data.results[i].title).appendTo($characterUl);  
        $("<li>").text(data.data.results[i].id).appendTo($characterUl);  
        $("<li>").text(data.data.results[i].release_date).appendTo($characterUl);  
        if (data.data.results[i].release_date > 0) {
            $characterLi.text(data.data.results[i].issue_number).appendTo($characterUl);      
        }  
    }

    $(window).scroll(function() {
        if($(window).scrollTop() + $(window).height() > $(document).height() - 10) {
            while ((data.data.results).length === offset || (data.data.results).length > offset) {
                offset = offset+20;
                $("<div>").text(offset).appendTo("body");
                getComics(offset);
            }
        }
    });
   });
}

$(document).ready(function() {    
var $characterComics = $("<div>", {id : "characterComics"});
$characterComics.appendTo("body");
getData(0);
}); 
函数getData(偏移量){ var jsonCallback=“&jsonCallback=?”; //var偏移=20; //var偏移量+=20; 风险价值限额=20; 变量characterURL=”http://api.example.com/character&byId=“+characterID+”&offset=“+offset+”&limit=“+limit; $.getJSON(characterURL+jsonCallback,函数(数据){ 对于(i=0;i<(data.data.results).长度;i++){ 变量$characterUl=$(“
    ”); $characterUl.appendTo(“#characterComics”); $(“
  • ”).text(data.data.results[i].title).appendTo($characterUl); $(“
  • ”).text(data.data.results[i].id).appendTo($characterUl); $(“
  • ”).text(data.data.results[i].发布日期).appendTo($characterUl); if(data.data.results[i].发布日期>0){ $characterLi.text(data.data.results[i].发行号).appendTo($characterUl); } } $(窗口)。滚动(函数(){ if($(窗口).scrollTop()+$(窗口).height()>$(文档).height()-10){ while((data.data.results).length==offset | |(data.data.results).length>offset){ 偏移量=偏移量+20; $(“”).文本(偏移量).appendTo(“正文”); 漫画(胶版); } } }); }); } $(文档).ready(函数(){ var$characterComics=$(“”,{id:“characterComics”}); $characterComics.appendTo(“body”); getData(0); }); 已更新 请将此作为伪代码阅读

    function getData(offset) {
        var jsonCallback = "&jsoncallback=?",
        characterURL = "http://api.example.com/character&byId=" + characterID + "&offset=" + offset + "&limit=" + limit;    
    
        $.getJSON(characterURL + jsonCallback, function(data) {
            for (i=0; i < (data.data.results).length; i++) {
                var $listItem = $("<li>");
                listItem.append("<span>"+data.data.results[i].title+"</span>");
                listItem.append("<span>"+data.data.results[i].id+"</span>");
                listItem.append("<span>"+data.data.results[i].release_date+"</span>"); 
                if (data.data.results[i].release_date > 0) {
                    listItem.append("<span>"+data.data.results[i].issue_number+"</span>");   
                }
                listItem.appendTo($characterUl);
                itemsLoaded++;
            }
       });
    }
    
    $(document).ready(function() {
        var $characterComics = $("<div>", {id : "characterComics"}),
            $characterUl = $("<ul>"),
            offset = 0,
            itemsLoaded = 0;
            limit = 20;
        $characterComics.appendTo("body");
        $characterUl.appendTo($characterComics);
    
        $(window).scroll(function() {
            if($(window).scrollTop() + $(window).height() > $(document).height() - 10) {
                if ("check here if you reached your offsets") {
                    offset = offset+20;
                    getData(offset);
                }
            }
        });
       // get your first set of data
       getData(0);
    });
    
    函数getData(偏移量){ var jsonCallback=“&jsonCallback=?”, characterURL=”http://api.example.com/character&byId=“+characterID+”&offset=“+offset+”&limit=“+limit; $.getJSON(characterURL+jsonCallback,函数(数据){ 对于(i=0;i<(data.data.results).长度;i++){ var$listItem=$(“
  • ”); listItem.append(“+data.data.results[i].title+”); 追加(“+data.data.results[i].id+”); listItem.append(“+data.data.results[i].release_date+”); if(data.data.results[i].发布日期>0){ listItem.append(“+data.data.results[i].发行号+”); } listItem.appendTo($characterUl); itemsLoaded++; } }); } $(文档).ready(函数(){ var$characterComics=$(“”,{id:“characterComics”}), $characterUl=$(“
      ”), 偏移量=0, itemsLoaded=0; 限值=20; $characterComics.appendTo(“body”); $characterUl.appendTo($characterComics); $(窗口)。滚动(函数(){ if($(窗口).scrollTop()+$(窗口).height()>$(文档).height()-10){ 如果(“如果达到偏移量,请检查此处”){ 偏移量=偏移量+20; 获取数据(偏移量); } } }); //获取第一组数据 getData(0); }); 已更新 请将此作为伪代码阅读

      function getData(offset) {
          var jsonCallback = "&jsoncallback=?",
          characterURL = "http://api.example.com/character&byId=" + characterID + "&offset=" + offset + "&limit=" + limit;    
      
          $.getJSON(characterURL + jsonCallback, function(data) {
              for (i=0; i < (data.data.results).length; i++) {
                  var $listItem = $("<li>");
                  listItem.append("<span>"+data.data.results[i].title+"</span>");
                  listItem.append("<span>"+data.data.results[i].id+"</span>");
                  listItem.append("<span>"+data.data.results[i].release_date+"</span>"); 
                  if (data.data.results[i].release_date > 0) {
                      listItem.append("<span>"+data.data.results[i].issue_number+"</span>");   
                  }
                  listItem.appendTo($characterUl);
                  itemsLoaded++;
              }
         });
      }
      
      $(document).ready(function() {
          var $characterComics = $("<div>", {id : "characterComics"}),
              $characterUl = $("<ul>"),
              offset = 0,
              itemsLoaded = 0;
              limit = 20;
          $characterComics.appendTo("body");
          $characterUl.appendTo($characterComics);
      
          $(window).scroll(function() {
              if($(window).scrollTop() + $(window).height() > $(document).height() - 10) {
                  if ("check here if you reached your offsets") {
                      offset = offset+20;
                      getData(offset);
                  }
              }
          });
         // get your first set of data
         getData(0);
      });
      
      函数getData(偏移量){ var jsonCallback=“&jsonCallback=?”, characterURL=”http://api.example.com/character&byId=“+characterID+”&offset=“+offset+”&limit=“+limit; $.getJSON(characterURL+jsonCallback,函数(数据){ 对于(i=0;i<(data.data.results).长度;i++){ var$listItem=$(“
    • ”); listItem.append(“+data.data.results[i].title+”); 追加(“+data.data.results[i].id+”); listItem.append(“+data.data.results[i].release_date+”); if(data.data.results[i].发布日期>0){ listItem.append(“+data.data.results[i].发行号+”); } listItem.appendTo($characterUl); itemsLoaded++; } }); } $(文档).ready(函数(){ var$characterComics=$(“”,{id:“characterComics”}), $characterUl=$(“
        ”), 偏移量=0, itemsLoaded=0; 限值=20; $characterComics.appendTo(“body”); $characterUl.appendTo($characterComics); $(窗口)。滚动(函数(){ if($(窗口).scrollTop()+$(窗口).height()>$(文档).height()-10){ 如果(“如果达到偏移量,请检查此处”){ 偏移量=偏移量+20; 获取数据(偏移量); } } }); //获取第一组数据 getData(0); });
        很有趣。在这种情况下,它如何知道何时停止额外的回调,因为我要检查数据长度是否等于或大于20,然后继续,如果小于20,则停止?很有趣。在这种情况下,它如何知道何时停止额外的回调,因为我要检查数据长度是否等于或大于20,然后继续,如果小于20,则停止?