js怎样写一个滚动加载功能?
Admin 2021-05-24 群英技术资讯 1554 次浏览
我们在做网站页面的时候,如果页面的内容太多,我们可以做分页或者做滚动加载更多,这篇文章就给大家分享关于使用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~")
})
以上就是关于js实现滚动加载的代码,滚动加载效果的应用也是比较多的,上述代码也有一定的借鉴价值,感兴趣的朋友可以参考学习。关于js滚动加载的介绍就到这,希望对大家有帮助。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文主要讲解的是V8的技术,是V8的入门篇,主要目的是了解V8的内部机制,希望对前端,快应用,浏览器,以及nodejs同学有些帮助。这里不涉及到如何编写优秀的前端,只是对JS内部引擎技术的讲解
这篇文章主要介绍了JavaScript把局部变量变成全局变量的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要和大家分享一个vue实现简易图书管理的案例,具备展示图书列表,修改,增加和删除图书操作的功能,下文有具体的实现代码以及实现思路,感兴趣的朋友就继续往下看吧。
传统的写法,这种需要自己去控制内部的状态。为了可以实现对象的遍历,我们需要在对象上实现上面说的迭代器。另外一种是利用生成器函数返回的Generator的迭代器来实现。
这篇文章主要介绍了JS中的Map对象用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008