加载函数不更新全局变量

时间:2017-10-03 16:40:28

标签: javascript jquery scope global-variables ejs

我正在创建节点应用程序,但无法更新全局变量。

这是我的代码(ejs文件):

 <% include ../partials/header %>

    <div class="page container">
        <div id="campgroundsRow" class="row">
        </div> <!-- row end -->
        <button id="loadMore">Load More</button>
    </div> <!-- Container End -->
    <% include ../partials/footer %>

    <script>
        var numGroundsToLoad = 1;
        var numGroundsLoaded = 0;

        loadCampgrounds(numGroundsLoaded, numGroundsToLoad);

        function loadCampgrounds(numGroundsLoaded, numGroundsToLoad) {
              var grounds = <%-JSON.stringify(campgrounds) %>
              for(var i=numGroundsLoaded + 1; i<numGroundsLoaded + numGroundsToLoad; i++) {
                   //code to add grounds[i] to campgroundsRow div
              }
              numGroundsLoaded += numGroundsToLoad;
        }

        $("#loadMore").on("click", function() {
              loadCampgrounds(numGroundsLoaded, numGroundsToLoad);   
        });
    </script>

我遇到的问题是loadCampgrounds功能实际上并未更新numGroundsLoaded。因此,当我点击加载更多按钮(#loadMore)时,它认为我正在添加ground[0].

我想要的是每次点击加载更多时,都会添加下一个地面。即,默认情况下会添加ground[0]。然后加载更多,ground[1]。然后加载更多,ground[2]等等(假设现在有无限的理由)。

正如您所看到的,问题与范围和何时加载内容有关。

1 个答案:

答案 0 :(得分:1)

因为您更新了局部变量。在这种情况下,要更新全局变量,您需要通过window.numGroundsLoaded访问它。