本文实例为大家分享了JavaScript实现滚动加载更多的具体代码,供大家参考,具体内容如下
vscode
index:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<!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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
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~" ) }) |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/QZ9420/article/details/110353744