js分页之前端代码实现和请求处理


Posted in Javascript onAugust 04, 2017

分页之js前端实现和请求处理代码,供大家参考,具体内容如下

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <link rel="stylesheet" href="css/public.css" charset='utf-8'>
</head>
<body>
 <div class='box'>
 <h2>
  <span>编号</span>
  <span>姓名</span>
  <span>性别</span>
  <span>分数</span>
 </h2>
 <ul class='con' id='content'>
  <li>
  <span>1</span>
  <span>xxx</span>
  <span>男</span>
  <span>90</span>
  </li>
 </ul>
 <div class='page' id='page'>
  <span>FIRST</span>
  <span>PREV</span>
  <ul class='pageNum' id='pageNum'>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  </ul>
  <span>NEXT</span>
  <span>LAST</span>
  <input type="text" id='numInp' value='1'/>
 </div>
 </div>
 <script src='js/ajax.js'></script>
 <script>
 var pageModule = (function(){
  //获取需要操作的DOM元素
  var content = document.getElementById('content'),
  page = document.getElementById('page'),
  pageNum = document.getElementById('pageNum'),
  numInp = document.getElementById('numInp');

  //设定当前也和总页数及本次请求的数据
  var n = 1,total = 0,data = null;
  //实现页面数据绑定及其他数据的绑定
  function bindHTML(){
  //content bind
  var str = '';
  for(var i = 0;i<data.length;i++){
   var curData = data[i];
   str+='<li studentId="'+curData["id"]+'">';
   str+='<span>'+curData["id"]+'</span>';
   str+='<span>'+curData["name"]+'</span>';
   str+='<span>'+(curData["sex"]==1 ? "女" : "男")+'</span>';
   str+='<span>'+curData["score"]+'</span>';
   str+='</li>';
  }
  content.innerHTML = str;
  //page bind
  str = '';
  for(i = 1;i<=total;i++){
   if(i===n){
   str+='<li class="bg">'+i+'</li>';
   continue;
   }
   str+='<li>'+i+'</li>';
  }
  pageNum.innerHTML = str;

  //numInp bind
  numInp.value = n;

  }
  //事件委托实现分页区域的按钮操作 给文本框enter键绑定操作
  function bindEvent(){
  page.onclick = function(e){
   e = e || window.event;
   var tar = e.target || e.srcElement
   tarTag = tar.tagName.toUpperCase(),
   tarInn = tar.innerHTML;
   if(tarTag==="SPAN"){
   if(tarInn==="FIRST"){
    if(n===1){
    return;
    }
    n = 1;
   }
   if(tarInn==="LAST"){
    if(n === total){
    return;
    }
    n = total;
   }
   if(tarInn==="PREV"){
    if(n === 1){
    return;
    }
    n--;
   }
   if(tarInn==="NEXT"){
    if(n === total){
    return;
    }
    n++;
   }
   }

   if(tarTag==="LI"){
   if(n === parseFloat(tarInn)){
    return;
   }
   n = parseFloat(tarInn);
   }

   //input
   if(tarTag==="INPUT"){
   return;
   }

   //重新发送请求
   sendAJAX()

  }

  numInp.onkeyup = function(e){
   e = e || window.event;
   if(e.keyCode===13){//enter键
   var val = parseFloat(this.value.replace(/^ +| +$/,''));
   if(isNaN(val)){
    this.value = n;
    return;
   }
   val = Math.round(val)
   if(val<1){
    n = 1;
   }else if(val>total){
    n = total;
   }else{
    n = val;
   }
   sendAJAX();

   }
  }
  }
  //content区域的LI跳转事件
  function bindLink(){
  var oLis = content.getElementsByTagName('li');
  for(var i = 0;i<oLis.length;i++){
   oLis[i].onclick = function(){
   // window.location.href = "detail.html";
   //在跳转的时候还需要把当前点击学员得ID传到详情页面
   window.open("detail.html?id="+this.getAttribute('studentId'));
   
   }
  }
  }
  function sendAJAX(){
  ajax({
   url:"/getList?n="+n,
   success:function(jsonData){
   if(jsonData && jsonData.code===0){
    total = jsonData["total"];
    data = jsonData['data'];
    bindHTML();
    bindLink();
   }
   }
  })
  }
  //模块入口
  function init(){
  sendAJAX();
  bindEvent();
  }

  return {
  init:init
  }
 })()

 pageModule.init();
 </script>
</body>
</html>

detail.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <link rel="stylesheet" href="css/public.css" charset='utf-8'>
</head>
<body>
 <ul class='box2' id='box2'>
 <li>
  <span>编号</span>
  <span>4</span>
 </li>
 <li>
  <span>姓名</span>
  <span>xxx</span>
 </li>
 <li>
  <span>性别</span>
  <span>男</span>
 </li>
 <li>
  <span>分数</span>
  <span>99</span>
 </li>
 </ul>
 <script src='js/ajax.js'></script>
 <script>
 String.prototype.queryURLParameter = function(){
  //PARAMETER
  var obj = {},
  reg = /([^?=&#]+)=([^?=&#]+)/g;
  this.replace(reg,function(){
  var key = arguments[1],
   value = arguments[2];
  obj[key] = value;
  });
  //->HASH
  // reg = /#([^?=&#]+)/;
  // if (reg.test(this)) {
  // obj['hash'] = reg.exec(this)[1];
  // }
  return obj;
 }
 var detailModuel = (function(){
  var data = null,urlId = window.location.href.queryURLParameter().id,oBox = document.getElementById('box2');
  function bindHTML(){
  var str = "";
  str+="<li><span>编号</span><span>"+data["id"]+"</span></li>";
  str+="<li><span>编号</span><span>"+data["name"]+"</span></li>";
  str+="<li><span>编号</span><span>"+(data["sex"]==1 ? "男" : "女")+"</span></li>";
  str+="<li><span>编号</span><span>"+data["score"]+"</span></li>";
  oBox.innerHTML = str;
  }

  function init(){
  ajax({
   url:"/getInfo?id="+urlId,
   success:function(jsonData){
   if(jsonData && jsonData.code===0){
    data = jsonData["data"];
    bindHTML();
   }
   }
  })
  }

  return {
  init:init
  }
 })()
 detailModuel.init();
 </script>
</body>
</html>

最终效果图:

js分页之前端代码实现和请求处理

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS宝典学习笔记(下)
Jan 10 Javascript
JQuery 图片延迟加载并等比缩放插件
Nov 09 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
Mar 21 Javascript
javascript重复绑定事件造成的后果说明
Mar 02 Javascript
JavaScript中的ArrayBuffer详细介绍
Dec 08 Javascript
jquery中show()、hide()和toggle()用法实例
Jan 15 Javascript
浅谈JavaScript异常处理语句
Jun 26 Javascript
用JS实现图片轮播效果代码(一)
Jun 26 Javascript
vue组件中使用props传递数据的实例详解
Apr 08 Javascript
原生JS实现烟花效果
Mar 10 Javascript
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
微信小程序 rich-text的使用方法
Aug 04 #Javascript
Easyui和zTree两种方式分别实现树形下拉框
Aug 04 #Javascript
JS中使用media实现响应式布局
Aug 04 #Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
Aug 04 #Javascript
node中Express 动态设置端口的方法
Aug 04 #Javascript
微信小程序 同步请求授权的详解
Aug 04 #Javascript
微信小程序 转发功能的实现
Aug 04 #Javascript
You might like
php 运行效率总结(提示程序速度)
2009/11/26 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
Javascript 验证上传图片大小[客户端]
2009/08/01 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
Python函数学习笔记
2008/10/07 Python
Python运算符重载详解及实例代码
2017/03/07 Python
Python金融数据可视化汇总
2017/11/17 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
Python 求向量的余弦值操作
2021/03/04 Python
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
护士个人简历自荐信
2013/10/18 职场文书
大学生专科毕业生自我评价
2013/11/17 职场文书
新学期决心书
2014/03/11 职场文书
护士找工作求职信
2014/07/02 职场文书
四年级学生期末评语
2014/12/26 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
中学社团活动总结
2015/05/07 职场文书
暑假生活随笔
2015/08/15 职场文书
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js