最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

原生js+ajax分頁組件

 更新時間:2020年01月30日 10:34:52   作者:一期一會  
這篇文章主要為大家詳細介紹了原生js+ajax分頁組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了js+ajax分頁組件的具體代碼,供大家參考,具體內(nèi)容如下

1.定義分頁組件DOM

<div id="pagination" class="pagination"></div>

2.定義分頁組件類及實例方法:

// 分頁組件類
function Pagination(_ref) {
 this.id = _ref.id; //分頁組件掛載的DOM節(jié)點
 this.curPage = _ref.curPage || 1; //初始頁碼
 this.draw = _ref.draw; // 初始化分頁請求次數(shù)
 this.pageSize = _ref.pageSize || 5; //分頁個數(shù)
 this.pageLength = _ref.pageLength; //每頁多少條
 this.pageTotal = 0; //總共多少頁
 this.dataTotal = 0; //總共多少數(shù)據(jù)
 this.ajaxParam = _ref.ajaxParam; // 分頁ajax
 this.showPageTotalFlag = _ref.showPageTotalFlag || false; //是否顯示數(shù)據(jù)統(tǒng)計
 this.showSkipInputFlag = _ref.showSkipInputFlag || false; //是否支持跳轉(zhuǎn)
 this.ul = document.createElement('ul');

 this.init();
};

// 給實例對象添加公共屬性和方法
Pagination.prototype = {
 init: function() {
 var pagination = document.getElementById(this.id);
 pagination.innerHTML = '';
 this.ul.innerHTML = '';
 pagination.appendChild(this.ul);
 var _this = this;
 _this.getPage(_this.curPage)
 .then( function( data ){
  //首頁
  _this.firstPage();
  //上一頁
  _this.lastPage();
  //分頁
  _this.getPages().forEach(function (item) {
  var li = document.createElement('li');
  if (item == _this.curPage) {
   li.className = 'active';
  } else {
   li.onclick = function () {
   _this.curPage = parseInt(this.innerHTML);
   _this.init();
   };
  }
  li.innerHTML = item;
  _this.ul.appendChild(li);
  });
  //下一頁
  _this.nextPage();
  //尾頁
  _this.finalPage();

  //是否支持跳轉(zhuǎn)
  if (_this.showSkipInputFlag) {
  _this.showSkipInput();
  }
  //是否顯示總頁數(shù),每頁個數(shù),數(shù)據(jù)
  if (_this.showPageTotalFlag) {
  _this.showPageTotal();
  }
 } )
 
 },
 // 分頁數(shù)據(jù)請求
 getPage: function( curPage ){
 var _this = this;
 _this.draw++;
 return new Promise( function( resolve, reh ){
  $.ajax( {
  url: _this.ajaxParam.url,
  type: _this.ajaxParam.type,
  dataType: "json",
  data: {
   curPage: curPage,
   pageLength: 10,
   draw: _this.draw
  },
  success: function(data) {
   if( data.isSuccess === true ){
   var data = data;
   _this.pageTotal = Math.ceil( parseFloat( data.data.totalResult/_this.pageLength ) ),
   _this.dataTotal = data.data.totalResult,
   _this.draw = data.data.draw;
   resolve( data )
   }else {
   reject( "請求錯誤" )
   }
  },
  error: function(err) {
   reject( err )
  }
  } )
 })
 },
 //首頁
 firstPage: function() {
 var _this = this;
 var li = document.createElement('li');
 li.innerHTML = '首頁';
 this.ul.appendChild(li);
 li.onclick = function () {
  var val = parseInt(1);
  _this.curPage = val;
  _this.init();
 };
 },
 //上一頁
 lastPage: function() {
 var _this = this;
 var li = document.createElement('li');
 li.innerHTML = '<';
 if (parseInt(_this.curPage) > 1) {
  li.onclick = function () {
  _this.curPage = parseInt(_this.curPage) - 1;
  _this.init();
  };
 } else {
  li.className = 'disabled';
 }
 this.ul.appendChild(li);
 },
 //分頁
 getPages: function() {
 var pag = [];
 if (this.curPage <= this.pageTotal) {
  if (this.curPage < this.pageSize) {
  //當前頁數(shù)小于顯示條數(shù)
  var i = Math.min(this.pageSize, this.pageTotal);
  while (i) {
   pag.unshift(i--);
  }
  } else {
  //當前頁數(shù)大于顯示條數(shù)
  var middle = this.curPage - Math.floor(this.pageSize / 2),
   //從哪里開始
   i = this.pageSize;
  if (middle > this.pageTotal - this.pageSize) {
   middle = this.pageTotal - this.pageSize + 1;
  }
  while (i--) {
   pag.push(middle++);
  }
  }
 } else {
  console.error('當前頁數(shù)不能大于總頁數(shù)');
 }
 if (!this.pageSize) {
  console.error('顯示頁數(shù)不能為空或者0');
 }
 return pag;
 },
 //下一頁
 nextPage: function() {
 var _this = this;
 var li = document.createElement('li');
 li.innerHTML = '>';
 if (parseInt(_this.curPage) < parseInt(_this.pageTotal)) {
  li.onclick = function () {
  _this.curPage = parseInt(_this.curPage) + 1;
  _this.init();
  };
 } else {
  li.className = 'disabled';
 }
 this.ul.appendChild(li);
 },
 //尾頁
 finalPage: function() {
 var _this = this;
 var li = document.createElement('li');
 li.innerHTML = '尾頁';
 this.ul.appendChild(li);
 li.onclick = function () {
  var yyfinalPage = _this.pageTotal;
  var val = parseInt(yyfinalPage);
  _this.curPage = val;
  _this.init();
 };
 },
 //是否支持跳轉(zhuǎn)
 showSkipInput: function() {
 var _this = this;
 var li = document.createElement('li');
 li.className = 'totalPage';
 var span1 = document.createElement('span');
 span1.innerHTML = '跳轉(zhuǎn)到';
 li.appendChild(span1);
 var input = document.createElement('input');
 input.setAttribute("type","number");
 input.onkeydown = function (e) {
  var oEvent = e || event;
  if (oEvent.keyCode == '13') {
  var val = parseInt(oEvent.target.value);
  if (typeof val === 'number' && val <= _this.pageTotal && val>0) {
   _this.curPage = val;
  }else{
   alert("請輸入正確的頁數(shù) !")
  }
  _this.init();
  }
 };
 li.appendChild(input);
 var span2 = document.createElement('span');
 span2.innerHTML = '頁';
 li.appendChild(span2);
 this.ul.appendChild(li);
 },
 //是否顯示總頁數(shù),每頁個數(shù),數(shù)據(jù)
 showPageTotal: function() {
 var _this = this;
 var li = document.createElement('li');
 li.innerHTML = '共&nbsp' + _this.pageTotal + '&nbsp頁';
 li.className = 'totalPage';
 this.ul.appendChild(li);
 var li2 = document.createElement('li');
 li2.innerHTML = '每頁&nbsp' + _this.pageLength + '&nbsp條';
 li2.className = 'totalPage';
 this.ul.appendChild(li2);
 var li3 = document.createElement('li');
 li3.innerHTML = '共&nbsp' + _this.dataTotal + '&nbsp條數(shù)據(jù)';
 li3.className = 'totalPage';
 this.ul.appendChild(li3);
 var li4 = document.createElement('li');
 li4.innerHTML = _this.curPage + "/" + _this.pageTotal;
 li4.className = 'totalPage';
 this.ul.appendChild(li4);
 }
};

3.實例化分頁組件

let pageInstance = new Pagination({
 id: 'pagination',
 curPage:1, // 初始頁碼,不填默認為1
 draw: 0, // 當前渲染次數(shù)統(tǒng)計
 pageLength: 10, //每頁多少條
 pageSize: 5, //分頁個數(shù),不填默認為5
 showPageTotalFlag:true, //是否顯示數(shù)據(jù)統(tǒng)計,不填默認不顯示
 showSkipInputFlag:true, //是否支持跳轉(zhuǎn),不填默認不顯示
 ajaxParam: { //分頁ajax
 url: 'https://www.easy-mock.com/mock/5cc6fb7358e3d93eff3d812c/page',
 type: "get",
 }
})

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Javascript中字符串相關(guān)常用的使用方法總結(jié)

    Javascript中字符串相關(guān)常用的使用方法總結(jié)

    本篇文章主要介紹了Javascript中字符串相關(guān)常用的使用方法。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • 前端在線預覽PDF文件三種實現(xiàn)方式(兼容移動端)

    前端在線預覽PDF文件三種實現(xiàn)方式(兼容移動端)

    這篇文章主要介紹了前端在線預覽PDF文件三種實現(xiàn)方式的相關(guān)資料,分別是使用微軟在線預覽地址、直接使用window.open打開文檔鏈接以及使用PDF.js,PDF.js方法穩(wěn)定,適用于大多數(shù)文件,每種方法都給出了詳細的代碼示例,需要的朋友可以參考下
    2025-02-02
  • BootStrap table刪除指定行的注意事項(筆記整理)

    BootStrap table刪除指定行的注意事項(筆記整理)

    在前端開發(fā)中遇到這樣的問題,對于table指定行的數(shù)據(jù)進行刪除,花了好長時間才解決,今天小編抽時間給大家介紹BootStrap table刪除指定行的注意事項,需要的朋友參考下吧
    2017-02-02
  • 利用transition實現(xiàn)文字上下抖動的效果

    利用transition實現(xiàn)文字上下抖動的效果

    這篇文章主要給大家介紹了利用transition屬性如何實現(xiàn)文字上下抖動的效果,文中給出了詳細的介紹和完整的實例代碼,相信對大家的學習具有一定的參考借鑒價值,有需要的朋友們下面來一起看看吧。
    2017-01-01
  • JavaScript和jQuery獲取input框的絕對位置實現(xiàn)方法

    JavaScript和jQuery獲取input框的絕對位置實現(xiàn)方法

    下面小編就為大家?guī)硪黄狫avaScript和jQuery獲取input框的絕對位置實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • 鴻蒙系統(tǒng)中的 JS 開發(fā)框架

    鴻蒙系統(tǒng)中的 JS 開發(fā)框架

    最近華為鴻蒙OS 2.0正式開源!關(guān)于鴻蒙的教程其實網(wǎng)上也已經(jīng)有一些嘗鮮的小伙伴分享了相關(guān)文章,這篇文章主要為大家詳細介紹了鴻蒙系統(tǒng)中的 JS 開發(fā)框架,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • JavaScript設(shè)計模式之工廠方法模式介紹

    JavaScript設(shè)計模式之工廠方法模式介紹

    這篇文章主要介紹了JavaScript設(shè)計模式之工廠方法模式介紹,本文講解了簡單工廠模式、多個工廠方法模式等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • JavaScript正則函數(shù)中test和match的區(qū)別解析

    JavaScript正則函數(shù)中test和match的區(qū)別解析

    在javascript中,用于檢測一個字符串是否匹配某個模式用的比較多的就是test和match方法。,這篇文章主要介紹了js正則函數(shù)中test和match的區(qū)別,需要的朋友可以參考下
    2022-11-11
  • uniapp開發(fā)小程序的經(jīng)驗總結(jié)

    uniapp開發(fā)小程序的經(jīng)驗總結(jié)

    這篇文章主要給大家介紹了關(guān)于uniapp開發(fā)小程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • JS中的算法與數(shù)據(jù)結(jié)構(gòu)之鏈表(Linked-list)實例詳解

    JS中的算法與數(shù)據(jù)結(jié)構(gòu)之鏈表(Linked-list)實例詳解

    這篇文章主要介紹了JS中的算法與數(shù)據(jù)結(jié)構(gòu)之鏈表(Linked-list),結(jié)合實例形式詳細分析了javascript中鏈表的概念、原理、定義及常用操作技巧,需要的朋友可以參考下
    2019-08-08

最新評論

武宣县| 剑川县| 闽侯县| 双牌县| 依安县| 温泉县| 古蔺县| 六枝特区| 南岸区| 昭通市| 元江| 东乌珠穆沁旗| 巧家县| 兴业县| 中阳县| 峡江县| 遂溪县| 合水县| 基隆市| 长海县| 海南省| 安福县| 凌源市| 苗栗市| 安龙县| 江安县| 德阳市| 蕲春县| 庆云县| 孟州市| 浦城县| 黑河市| 资源县| 南部县| 通许县| 邯郸县| 酒泉市| 新丰县| 龙泉市| 密云县| 贵阳市|