IIFE无效-循环加载多个页面

问题描述 投票:2回答:1

我是一个相对业余的javascripter,希望获得有关循环加载多个页面的帮助。我知道这与IIFE有关,但无法弄清楚我在做什么错。

要求:我有一个包含许多html页面名称的数组。我想加载每个页面的一部分(循环)。

问题:除实际负载外,其他所有东西似乎都可以正常工作。它只加载数组的最后一个,这大概意味着我的IIFE是不正确的。

function getPages(){

        for (i; i< ar.length; i++){

        (function loopPages(j){

            // logging all apears correct - j increases
            console.log("Looping: "+ j);
            console.log(ar[j].title);
            console.log(ar[j].page);

            // pg string is page name + specific id and anchor tag
            pg = ar[j].page + " #content a";

            // add name of page to a div - works corectly
            $("#str").append(pg + "<br>");

            //loop through pages to load them and add <a> tags to #links div 
            $("#tmp").load(pg, "html", function(){
                $("#links").append($("#tmp"));
            });

        })(i);
        }
   }

更新:较早地声明了i和ar变量。控制台消息都很完美。

有人能指出我正确的方向吗?

javascript jquery arrays iife
1个回答
0
投票

您的问题实际上是.load()。您正在将所有结果加载到#tmp中,每次都将被覆盖。

您还需要确保按照在ar中出现的顺序添加内容,而不是以最快的加载速度进行添加。

我将执行以下操作

  1. ar映射到由page和加载的内容解析的承诺/延期对象数组
  2. 使用$.when()等待所有这些完成
  3. 迭代已完成的承诺并将相关部分添加到$.when()#str元素中
#links
© www.soinside.com 2019 - 2024. All rights reserved.