原生JS下拉加载插件分享


Posted in Javascript onDecember 26, 2016

使用方式:

new downUpData({url:"http://192.168.1.103:8080/test/
data.json",distance:20,callback:function(resp,config){
 var oUl = document.getElementById('ul');
 for(var i=0;i<resp.data.length;i+=1){
 oUl.innerHTML+= '<li>'+ resp.data[i].title +'</li>';
 }
}}).isBottom();

原生JS下拉加载插件分享

原生JS下拉加载插件分享

默认滚动到底部会去请求ajax

参数说明:

url:请求的数据地址,不支持跨域(必须)

distance:距离底部多远加载(可选参数)

callback:当滚动到指定距离后请求完ajax将会触发这个回调函数,里面有两个参数,第一个为数据(以及转成JSON对象了,用的是JSON.parse,可能低版本浏览器不支持这个方法),第二个参数为传进去的参数,当你需要重新改变请求信息的时候可以用这个,比如说你想做分页效果,就需要改变url地址。

callback(name1,name2)

name1:data

name2:配置

原生JS下拉加载插件分享

源代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <style>
 body,ul{
  margin:0;
  padding:0;
 }
 </style>
</head>
<body>
 <ul id="ul">
 </ul>
 <script>
 function downUpData(obj){
  this.config = obj;
 };
 downUpData.prototype = {
  // 判断是否到达底部
  isBottom:function(){
  var _this = this;
  var scrollH = null,
   clientHeight = null;
   scrollTop = null;
   distance = this.config.distance||0;
   h = 0;
  function scroll(){
   scrollH = document.body.scrollHeight||document.documentElement.scrollHeight;
   clientHeight = window.innerHeight;
   scrollTop = document.body.scrollTop||document.documentElement.scrollTop;
   h = clientHeight + scrollTop;
   if(h>=scrollH-distance){
   _this.ajax();
   }
  }
  scroll();

  window.onscroll = function(){
   scroll();
  };
  },
  // 发送AJAX请求
  ajax:function(){
  var _this = this;
  var xhr = null;
  if(window.XMLHttpRequest){
   xhr = new XMLHttpRequest();
  }else{
   xhr = new ActiveXObject("Microsoft.XMLHTTP");
  }

  xhr.open("GET",this.config.url,true);
  xhr.onreadystatechange = function(){
   if(xhr.readyState==4&&xhr.status==200){
   _this.config.callback(JSON.parse(xhr.responseText),_this.config);
   }
  }
  xhr.send();
  }
 };

 new downUpData({url:"http://192.168.1.103:8080/test/data.json",distance:20,callback:function(resp,config){
  console.log(config)
  var oUl = document.getElementById('ul');
  for(var i=0;i<resp.data.length;i+=1){
  oUl.innerHTML+= '<li>'+ resp.data[i].title +'</li>';
  }
 }}).isBottom();
 </script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Mootools 1.2教程 定时器和哈希简介
Sep 15 Javascript
JavaScript之引用类型介绍
Aug 10 Javascript
表格单元格交错着色实现思路及代码
Apr 01 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
Feb 10 Javascript
javascript实现框架高度随内容改变的方法
Jul 23 Javascript
JavaScript节点及列表操作实例小结
Aug 05 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
Nov 04 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
Oct 21 Javascript
浅谈React碰到v-if
Nov 04 Javascript
详解vue为什么要求组件模板只能有一个根元素
Jul 22 Javascript
js实现限定区域范围拖拉拽效果
Nov 20 Javascript
JavaScript中10个Reduce常用场景技巧
Jun 21 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
Dec 26 #Javascript
javascript输出AscII码扩展集中的字符方法
Dec 26 #Javascript
在一个页面重复使用一个js函数的方法详解
Dec 26 #Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
Dec 26 #Javascript
jQuery实现动态添加tr到table的方法
Dec 26 #Javascript
浅谈JavaScript的计时器对象
Dec 26 #Javascript
js模糊查询实例分享
Dec 26 #Javascript
You might like
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
javascript 定义初始化数组函数
2009/09/07 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
简单介绍Python中的JSON模块
2015/04/08 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
老生常谈Python基础之字符编码
2017/06/14 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
Python 串口读写的实现方法
2019/06/12 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
pytorch的batch normalize使用详解
2020/01/15 Python
Python argparse模块使用方法解析
2020/02/20 Python
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
材料加工硕士生求职信
2013/10/10 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
2015年社区工作总结
2015/04/08 职场文书
2015年营业员工作总结
2015/04/23 职场文书
党支部综合考察意见
2015/06/01 职场文书
三好学生竞选稿
2015/11/21 职场文书
小学班级管理心得体会
2016/01/07 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
Python实现照片卡通化
2021/12/06 Python
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis