版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
網(wǎng)站建設(shè)定制專家如何利用JS實現(xiàn)頁面數(shù)據(jù)無限加載實現(xiàn)數(shù)據(jù)無限加載的過程大致如下:1.滾動條滾動到頁面底部.2.觸發(fā)ajax加載,把請求返回的數(shù)據(jù)加載到列表后面.如何判斷滾動條是否滾動到頁面底部?我們可以設(shè)置一個規(guī)則:當(dāng)滾動條的滾動高度和整個文檔高度相差不到20像素,則認為滾動條滾動到頁面底部了:文檔高度-視口高度-滾動條滾動高度<20要通過代碼實現(xiàn)這樣的判斷,我們必須要了解上面的這些高度通過哪些代碼獲取?可以參考我之前寫的一篇“HTML元素坐標定位,這些知識點得掌握”.上面的判斷,封裝了一個方法://檢測滾動條是否滾動到頁面底部functionisScrollToPageBottom(){//文檔高度vardocumentHeight=document.documentElement.offsetHeight;varviewPortHeight=getViewportSize().h;varscrollHeight=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;returndocumentHeight-viewPortHeight-scrollHeight<20;}判斷有了,我們就可以開啟一個定時器,900毫秒監(jiān)測一次,如果isScrollToPageBottom()返回true則調(diào)用ajax請求數(shù)據(jù),如果返回false則通過900毫秒之后再監(jiān)測.下面是核心代碼實現(xiàn):<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>無限分頁</title><linkrel="stylesheet"href="assets/css/index.css"/></head><body><divclass="l"><ulid="list"class="list"></ul></div><scriptsrc="http:///jquery/3.1.0/jquery.min.js"></script><scriptsrc="js/jquery.mockjax.js"></script><scripttype="text/javascript"src="js/dataMock.js"></script><scripttype="text/javascript">//作為一個對象的w和h屬性返回視口的尺寸functiongetViewportSize(w){//使用指定的窗口,如果不帶參數(shù)則使用當(dāng)前窗口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"<li>"+"<divclass='pic-wrapleftFloat'>"+"<imgsrc='"+goods.pic+"'>"+"</div>"+"<divclass='info-wrapleftFloat'>"+"<divclass='info-name'><span>"++"</span></div>"+"<divclass='info-address'><span>"+goods.address+"</span></div>"+"<divclass='info-bottom'>"+"<divclass='info-priceleftFloat'><span>¥"+goods.price+"</span></div>"+"<divclass='info-starleftFloat'><span>"+goods.star+"人推薦</span></div>"+"<divclass='info-moreleftFloat'><span>更多信息</span></div>"+"</div>"+"</div>"+"</li>";}//初始化的時候默給list加載100條數(shù)據(jù)$.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);}});//加載數(shù)據(jù)functionloadDataDynamic(){//先顯示正在加載中if($("#loadingLi").length===0)$("#list").append("<liid='loadingLi'class='loading'>正在加載...</li>");else{$("#loadingLi").text("正在加載...").removeClass("space");}varloadingLi=document.getElementById("loadingLi");loadingLi.scrollIntoView();//加載數(shù)據(jù),數(shù)據(jù)加載完成后需要移除加載提示varhasData=false,msg="";$.ajax("http://localhost:8800/loadData?sessionId="+(+newDate)).done(function(result){if(result.status){if(result.data.length>0){hasData=true;varhtml="";result.data.forEach(function(goods){html+=getGoodsTemplate(goods);});$("#list").append(html);}else{msg="數(shù)據(jù)已加載到底了"}}$("#list").append(loadingLi);}).fail(function(){msg="數(shù)據(jù)加載失敗!";}).always(function(){!hasData&&setTimeout(function(){$(document.body).scrollTop(document.body.scrollTop-40);},500);msg&&$("#loadingLi").text(msg);//重新監(jiān)聽滾動setTimeout(watchScroll,900);});}//如果滾動條滾動到頁面底部,需要加載新的數(shù)據(jù),并且顯示加載提示functionwatchScroll(){if(!isScrollToPageBottom()){setTimeout(arguments.callee,900);return;}loadDataDynamic();}//開始檢測滾動條watchScroll();</script></body></html>demo中ajax請求我是通過jquery-mockjax模擬的數(shù)據(jù).代碼如下:/***模擬接口.*/vari=0,len=200,addresses=["四川","北京","上海","廣州","深圳","甘肅","云南","浙江","青海","貴州"];functiongetData(){varsize=Math.min(i+50,len),arr=[];for(;i<size;i++){arr.push({name:"蘋果"+(i%10+1),pic:"assets/images/iphone"+(i%10+1)+".jpg",price:parseInt(Math.random()*10000),star:parseInt(Math.random()*1000)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省湛江市坡頭區(qū)2023-2024學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 養(yǎng)老院老人生活照顧人員福利待遇制度
- 養(yǎng)老院老人健康監(jiān)測人員考核獎懲制度
- 2024年土地儲備與供應(yīng)股權(quán)合作開發(fā)合同3篇
- 拖欠廠房租協(xié)議書
- 2025年慶陽貨運考試題目
- 2024年新型內(nèi)墻膩子涂料施工合作協(xié)議3篇
- 2025年日照貨運上崗證考試題庫1387題
- 2024年版:解除品牌授權(quán)協(xié)議書3篇
- 2025年池州普通貨運從業(yè)資格證考試
- 讀了蕭平實導(dǎo)師的《念佛三昧修學(xué)次第》才知道原來念佛門中有微妙法
- 周邊傳動濃縮刮泥機檢驗報告(ZBG型)(完整版)
- 紙箱理論抗壓強度、邊壓強度、耐破強度的計算
- 土地增值稅清算審核指南
- 死亡通知書模板
- 鷸蚌相爭課件
- PMC(計劃物控)面試經(jīng)典筆試試卷及答案
- 失業(yè)保險金申領(lǐng)表_11979
- 《質(zhì)量管理體系文件》風(fēng)險和機遇評估分析表
- 食品安全約談通知書
- 舒爾特方格A4直接打印版
評論
0/150
提交評論