【发布时间】:2014-01-07 12:46:29
【问题描述】:
我正在尝试让这个无限加载脚本在我的项目中工作。
这是我的 HTML:
<!-- Contents -->
<div id="page-container">
<div id="scroller">
<div id="page_1" class="pagina"></div>
<div id="page_2" class="pagina"></div>
<div id="page_3" class="pagina"></div>
<div id="page_4" class="pagina"></div>
<div id="page_5" class="pagina"></div>
<div id="page_6" class="pagina"></div>
</div>
</div>
<div id="pages-to-load">
<div id="page_7" class="pagina"></div>
...
<div id="page_25" class="pagina"></div>
</div>
这是脚本:
function scrollalert(){
var pages = document.getElementById("scroller").getElementsByTagName("div");
var currentPageId = pages[pages.length - 1];
//console.log("currentPageId is: "+currentPageId);
var scrollbox = document.querySelector('#page-container');
var scrolltop = $(window).scrollTop();
var scrollheight = scrollbox.scrollHeight;
var windowheight = $(window).height();
var scrolloffset=20;
console.log(scrolltop);
console.log(scrollheight);
console.log(windowheight);
console.log(scrollheight-(windowheight+scrolloffset));
if(scrolltop>=(scrollheight-(windowheight+scrolloffset))) {
//fetch new items
console.log("loading more pages");
(function() {
alert('test');
var i;
var pagesToLoad = $("#pages-to-load > div").size();
for (i = 0; i < pagesToLoad; i++) {
console.log(pagesToLoad[i].id);
$.get(pagesToLoad[i].id, function(newitems){
alert('get new page');
$('#scroller').append(newitems);
updatestatus();
})
};
})();
};
}
无论我尝试什么,我似乎都无法加载和附加我的新页面。向下滚动时,我的 scrollTop 和 scrollHeight 也不会改变。我确定我在这里遗漏了一些明显的东西。我的待加载页面也未定义?
【问题讨论】:
-
你能在这里复制问题吗:jsfiddle.net/cQ7vP ???
-
很奇怪。在小提琴中它似乎有效。我的应用程序的控制台显示 Uncaught TypeError: Cannot read property 'id' of undefined on the pages-to-load 变量。为什么会这样?
-
该函数在
$(document).ready函数中调用。将其替换为$(scrollalert)没有区别 -
是的,因为它是相同的行为。所以错误是另一回事。仅供参考, size() 已弃用,您应该改用:
var pagesToLoad = $("#pages-to-load > div").length();但这不会解决您的问题。哪一行给你带来了错误?等等,pagesToLoad 应该是一个数字,所以你想在这里做什么?如我所见,应插入:pagesToLoad[i].id使用:$("#pages-to-load > div").get(i).id -
为什么它可以在 jsfiddle 中工作,但不能在我的应用程序中工作?我不知道我可以尝试解决这个问题
标签: javascript jquery infinite-scroll