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 相关文章推荐
DEFER怎么用?
Jul 01 Javascript
js利用与或运算符优先级实现if else条件判断表达式
Apr 15 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
Nov 07 Javascript
jquery easyui combox一些实用的小方法
Dec 25 Javascript
二叉树先序遍历的非递归算法具体实现
Jan 09 Javascript
jQuery.each使用详解
Jul 07 Javascript
Bootstrap3 datetimepicker控件使用实例
Dec 13 Javascript
如何使用less实现随机下雪动画详解
Jan 02 Javascript
基于three.js实现的3D粒子动效实例代码
Apr 09 Javascript
vue+element-ui+axios实现图片上传
Aug 20 Javascript
微信小程序点击滚动到指定位置的实现
May 22 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
Aug 03 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实现TCP端口检测的方法
2015/04/01 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
cakephp常见知识点汇总
2017/02/24 PHP
node.js入门教程
2014/06/01 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
用Python创建声明性迷你语言的教程
2015/04/13 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
Python for循环及基础用法详解
2019/11/08 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
如何用python处理excel表格
2020/06/09 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
Intersport西班牙:在线体育商店
2019/11/06 全球购物
网站编辑求职信
2013/10/17 职场文书
红色故事演讲稿
2014/05/22 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python