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 24 Javascript
原来Jquery.load的方法可以一直load下去
Mar 28 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
jquery实现文本框数量加减功能的例子分享
May 10 Javascript
基于jQuery创建鼠标悬停效果的方法
Mar 07 Javascript
基于JavaScript FileReader上传图片显示本地链接
May 27 Javascript
JS实现页面进入和返回定位到具体位置
Dec 08 Javascript
AngularJS Controller作用域
Jan 09 Javascript
代码详解Vuejs响应式原理
Dec 20 Javascript
react中fetch之cors跨域请求的实现方法
Mar 14 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
Aug 20 Javascript
Vue项目打包压缩的实现(让页面更快响应)
Mar 10 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
php获取数据库中数据的实现方法
2017/06/01 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
自己的js工具 Cookie 封装
2009/08/21 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
Python的Flask框架中web表单的教程
2015/04/20 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
关于Python的一些学习总结
2018/05/25 Python
Python 编程速成(推荐)
2019/04/15 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
python属于跨平台语言码
2020/06/09 Python
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
售后求职信范文
2014/03/15 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
Pytorch中Softmax和LogSoftmax的使用详解
2021/06/05 Python
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL