如何利用JS实现页面数据无限加载

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何利用JS实现页面数据无限加载

实现数据无限加载的过程大致如下:

1.滚动条滚动到页面底部.

2.触发ajax加载,把请求返回的数据加载到列表后面.

如何判断滚动条是否滚动到页面底部?我们可以设置一个规则:当滚动条的滚动高度和整个文档高度相差不到20像素,则认为滚动条滚动到页面底部了:

文档高度-视口高度-滚动条滚动高度<20

要通过代码实现这样的判断,我们必须要了解上面的这些高度通过哪些代码获取?可以参考我之前写的一篇“HTML元素坐标定位,这些知识点得掌握”.

上面的判断,封装了一个方法:

//检测滚动条是否滚动到页面底部

functionisScrollToPageBottom(){

//文档高度

vardocumentHeight=document.documentElement.offsetHeight;

varviewPortHeight=getViewportSize().h;

varscrollHeight=window.pageYOffset||

document.documentElement.scrollTop||

document.body.scrollTop||0;

returndocumentHeight-viewPortHeight-scrollHeight<20;

}

判断有了,我们就可以开启一个定时器,900毫秒监测一次,如果isScrollToPageBottom()返回true则调用ajax请求数据,如果返回false则通过900毫秒之后再监测.

下面是核心代码实现:

无限分页

//作为一个对象的w和h属性返回视口的尺寸functiongetViewportSize(w){

//使用指定的窗口,如果不带参数则使用当前窗口

w=w||window;

//除了IE8及更早的版本以外,其他浏览器都能用

if(w.innerWidth!=null)

return{w:w.innerWidth,h:w.innerHeight};

//对标准模式下的IE(或任意浏览器)

vard=w.document;

if(patMode=="CSS1Compat")

return{w:d.documentElement.clientWidth,h:d.documentElement.clientHeight};//对怪异模式下的浏览器

return{w:d.body.clientWidth,h:d.body.clientHeight};

}

//检测滚动条是否滚动到页面底部

functionisScrollToPageBottom(){

//文档高度

vardocumentHeight=document.documentElement.offsetHeight;varviewPortHeight=getViewportSize().h;

varscrollHeight=window.pageYOffset||

document.documentElement.scrollTop||

document.body.scrollTop||0;

returndocumentHeight-viewPortHeight-scrollHeight<20;

}

//商品模板

functiongetGoodsTemplate(goods){

return"

  • "+

    ""+

    ""+

    "

  • "+

    ""+

    ""++"

    "+

    ""+goods.address+"

    "+

    ""+

    "¥"+goods.price+"

    "+

    ""+goods.star+"人推荐

    "+

    "更多信息"+

    ""+

    ""+

    "";

    }

    //初始化的时候默给list加载100条数据

    $.ajax("http://localhost:8800/loadData?sessionId="+(+newDate)).done(function(result){ if(result.status){

    varhtml="";

    result.data.forEach(function(goods){

    html+=getGoodsTemplate(goods);

    });

    $("#list").append(html);

    }

    相关文档
    最新文档