我是一个相对业余的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变量。控制台消息都很完美。
有人能指出我正确的方向吗?
您的问题实际上是.load()
。您正在将所有结果加载到#tmp
中,每次都将被覆盖。
您还需要确保按照在ar
中出现的顺序添加内容,而不是以最快的加载速度进行添加。
我将执行以下操作
ar
映射到由page
和加载的内容解析的承诺/延期对象数组$.when()
等待所有这些完成$.when()
和#str
元素中#links