JavaScript實現滾動加載更多
本文實例為大傢分享瞭JavaScript實現滾動加載更多的具體代碼,供大傢參考,具體內容如下
vscode
index:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * {margin:0; padding: 0;} li {list-style: none;} body {background: #eee;} .wrapper {background: #fff;width: 970px; margin:20px auto; padding: 15px;} h1 {text-align: center; border-bottom: 1px solid #ddd; padding-bottom: 20px;} li {margin:20px 0; border-bottom: 1px dotted #eee; padding-bottom: 20px;} p { line-height: 25px;} </style> <script src="/jquery-1.11.3.js"></script> </head> <body> <div class="wrapper"> <h1>新聞列表(加載更多)<script>document.write(new Date().toLocaleString())</script></h1> <ul> </ul> <div class="footer" style="text-align: center"> <img style="width: 40px" src="" alt=""> </div> </div> <script> let page = 1; // 默認是第1頁 let load = true; function getNewsList(page) { $(".footer img").attr("src","/timg.gif") load = false; $.get("/news",{page},res=>{ // console.log(res) if(res.news.length){ let str =""; // 客戶端渲染,客戶端自己通過ajax獲取數據,自已渲染數據 res.news.forEach(item=>{ str += ` <li> <h2><a href="#" rel="external nofollow" >${item.title}</a></h2> <p class="time">${item.time}</p> <p class="summary">${item.summary}</p> </li> ` }) $("ul").append(str) load = true; }else{ $(".footer").html("--------------- 我是有底線的 --------------- ") load = false; } }) } getNewsList(page); // 一上來就獲取第1頁的數據 // 判斷出什麼時候到底部 $(document).scroll(function () { let st = $(window).scrollTop(); // 卷上去的高度 let ch = $(window).height(); // 一屏的高度 let dh = $(document).height(); // 整個文檔(整個內容)的高度 if((st+ch) >= dh && load){ // 滾動到瞭底部 getNewsList(++page) } }) </script> </body> </html>
JS:
let express = require("express"); let path = require("path"); var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; let app = express(); // 托管靜態資源 app.use(express.static(path.resolve(__dirname, "./public"))) // 當訪問/ 響應一個html頁面,不是渲染模板 app.get("/",(req,res)=>{ res.sendFile(path.resolve(__dirname,"./views/index.html")) }) // 當訪問/news 響應一個json數據 // 如果一個路由,返回瞭一個Json數據,我們叫http://localhost:3000/news是api接口 // api:1)別人封裝的方法,我們直接去調用 2)指一個url地址 叫api接口 app.get("/news",(req,res)=>{ let page = req.query.page || 1; // page表示當前是第幾頁 // page如果小於等於0 (page <= 0) && (page = 1) // console.log(page) let pageSize = 5; // 每頁顯示多少條 let offset = (page-1)*pageSize; MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) { if (err) throw err; var dbo = db.db("news"); dbo.collection("newslist").find({}).skip(offset).limit(pageSize).toArray(function(err, result) { if (err) throw err; // console.log(result); // 獲取每一頁的數據 dbo.collection("newslist").count().then(result2=>{ // result2表示一共有多少條數據 let total = result2; let size = Math.ceil(total / pageSize) // 服務端渲染: 核心是使用模板引擎 jsp php asp out // 是把模板和數據柔和在一起,形成一個有真實數據的頁面,響應給客戶端 res.json({ news:result, total, // 總共多少條數據 pageSize, // 每頁顯示多少條 page, // 當前是第幾頁 size, // 一菜有多少頁 }) }); db.close(); }); }); }) app.listen(3000,()=>{ console.log("3000 ok~") })
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 詳解如何使用Node.js實現熱重載頁面
- Ajax 的初步實現(使用vscode+node.js+express框架)
- Nodejs之Express中間件的分類介紹
- AJAX請求以及解決跨域問題詳解
- 一篇文章告訴你如何實現Vue前端分頁和後端分頁