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 相关文章推荐
Array.prototype.slice.apply的使用方法
Mar 17 Javascript
情人节之礼 js项链效果
Feb 13 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
Oct 18 Javascript
jQuery新的事件绑定机制on()示例应用
Jul 18 Javascript
原生js和jQuery写的网页选项卡特效对比
Apr 27 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
Jun 17 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
Aug 29 Javascript
javascript获取以及设置光标位置
Feb 16 Javascript
JS中验证整数和小数的正则表达式
Oct 08 Javascript
vue登录页面cookie的使用及页面跳转代码
Jul 10 Javascript
简单了解vue中的v-if和v-show的区别
Oct 08 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
Apr 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验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
numpy自动生成数组详解
2017/12/15 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
Python基本socket通信控制操作示例
2019/01/30 Python
python实现远程控制电脑
2019/05/23 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
前台接待岗位职责
2013/12/03 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
大学校庆策划书
2014/01/31 职场文书
广播节目策划方案
2014/05/23 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
四风对照检查材料范文
2014/09/27 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
python中对列表的删除和添加方法详解
2022/02/24 Python