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 相关文章推荐
理解 JavaScript 预解析
Oct 25 Javascript
JavaScript打开word文档的实现代码(c#)
Apr 16 Javascript
DWZ刷新dialog解决方法
Mar 03 Javascript
javascript间隔刷新的简单实例
Nov 14 Javascript
JavaScript中string转换成number介绍
Dec 31 Javascript
JS实现进入页面时渐变背景色的方法
Feb 25 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
May 25 jQuery
详解ES6中的三种异步解决方案
Jun 28 Javascript
如何手动实现es5中的bind方法详解
Dec 07 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 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
360通用php防护代码(使用操作详解)
2013/06/18 PHP
php curl获取网页内容(IPV6下超时)的解决办法
2013/07/16 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
python多线程编程方式分析示例详解
2013/12/06 Python
Python import自定义模块方法
2015/02/12 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
通过实例解析python描述符原理作用
2020/01/22 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
超级实用的8个Python列表技巧
2020/08/24 Python
Python类型转换的魔术方法详解
2020/12/23 Python
家长评语和期望
2014/02/10 职场文书
班级年度安全计划书
2014/05/01 职场文书
市场营销战略计划书
2014/05/06 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL