JavaScript实现滚动加载更多


Posted in Javascript onDecember 27, 2020

本文实例为大家分享了JavaScript实现滚动加载更多的具体代码,供大家参考,具体内容如下

vscode

JavaScript实现滚动加载更多

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~")
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery生成asp.net服务器控件的代码
Feb 04 Javascript
js substr、substring和slice使用说明小记
Sep 15 Javascript
javascript代码编写需要注意的7个小细节小结
Sep 21 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
May 11 Javascript
一个基于jquery的文本框记数器
Sep 19 Javascript
使用js检测浏览器的实现代码
May 14 Javascript
Node.js编码规范
Jul 14 Javascript
使用jquery+CSS实现控制打印样式
Dec 31 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
Nov 25 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
Jan 05 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
Sep 23 Javascript
react redux入门示例
Apr 19 Javascript
jQuery实现简单轮播图效果
Dec 27 #jQuery
JavaScript实现瀑布流布局的3种方式
Dec 27 #Javascript
Vue实现省市区三级联动
Dec 27 #Vue.js
JavaScript实现通讯录功能
Dec 27 #Javascript
vue3.0自定义指令(drectives)知识点总结
Dec 27 #Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 #Vue.js
在vue项目中封装echarts的步骤
Dec 25 #Vue.js
You might like
咖啡的种类和口感
2021/03/03 新手入门
用mysql内存表来代替php session的类
2009/02/01 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
python矩阵的转置和逆转实例
2018/12/12 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
如何基于线程池提升request模块效率
2020/04/18 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
js实现弹框效果
2021/03/24 Javascript
化工专业推荐信范文
2013/11/28 职场文书
违纪检讨书2000字
2014/02/08 职场文书
建设工地安全标语
2014/06/07 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
乌镇导游词
2015/02/02 职场文书
护士辞职信怎么写
2015/02/27 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
圣诞晚会主持词
2015/07/01 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书