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

javascript動(dòng)態(tài)分頁(yè)的實(shí)現(xiàn)方法實(shí)例

 更新時(shí)間:2022年06月21日 10:57:03   作者:camellia  
最近的項(xiàng)目需要添加一個(gè)分頁(yè)導(dǎo)航的功能,沒有用網(wǎng)上封裝好的文件,通過JS自己簡(jiǎn)單實(shí)現(xiàn)了效果,這篇文章主要給大家介紹了關(guān)于javascript動(dòng)態(tài)分頁(yè)的實(shí)現(xiàn)方法,需要的朋友可以參考下

之前分頁(yè)都是使用框架給出的分頁(yè)類來實(shí)現(xiàn)分頁(yè),當(dāng)然,體驗(yàn)可能不是那么好。

這次在寫YII2.0框架的后臺(tái)管理系統(tǒng)的小例子的時(shí)候,我這也嘗試了一下前后分離,用ajax來實(shí)現(xiàn)分頁(yè)跳轉(zhuǎn)。

那么前端的頁(yè)碼繪制及跳頁(yè)等其他的樣式,都是由JavaScript根據(jù)后臺(tái)返回的數(shù)據(jù)拼接而成。我的分頁(yè)效果如下圖所示:

大概就是上面的樣子。

Html代碼如下:對(duì)照第一張圖片

<ul> 
    <li><span>1<span data-id="1"></span></span></li>
    <li><a data-id="2">2</a></li>
    <li><a data-id="3">3</a></li>
    <li><a data-id="4">4</a></li>
    <li><a data-id="5">5</a></li>
    <li><a data-id="6">6</a></li>
    <li><a data-id="7">7</a></li>
    <li><a data-id="8">8</a></li>
    <li><a data-id="false"> ... </a></li>
    <li><a data-id="11"> 11 </a></li>
    <li><a data-id="next"> &gt;&gt; </a></li>
</ul>

JavaScript代碼如下:

我這里使用的是純JavaScript代碼,沒有使用jquery,這個(gè)是考慮到兼容性的問題。

/**
 * @name 繪制分頁(yè)
 * @author camellia
 * @date 20200703
 * @param pageOptions 這是一個(gè)json對(duì)象
 * @param pageTotal 總頁(yè)數(shù)
 * @param curPage 當(dāng)前頁(yè)數(shù)
 * @param paginationId  顯示分頁(yè)代碼的上層DOM的id
 */
 function dynamicPagingFunc(pageOptions)
 {
    // 總頁(yè)數(shù)
    var pageTotal = pageOptions.pageTotal || 1;
    // 當(dāng)前頁(yè)
    var curPage = pageOptions.curPage || 1;
    // 獲取頁(yè)面DOM對(duì)象
    var paginationId = document.getElementById(''+pageOptions.paginationId+'') || document.getElementById('pagination');
    // 如果當(dāng)前頁(yè) 大于總頁(yè)數(shù)  當(dāng)前頁(yè)為1
    if(curPage>pageTotal)
    {
       curPage =1;
    }
    var html = "<ul>  ";
    /*總頁(yè)數(shù)小于5,全部顯示*/
    if(pageTotal<=5)
    {
       html = appendItem(pageTotal,curPage,html);
       paginationId.innerHTML = html;
    }
    /*總頁(yè)數(shù)大于5時(shí),要分析當(dāng)前頁(yè)*/
    if(pageTotal>5)
    {
       if(curPage<=4)
       {
          html = appendItem(pageTotal,curPage,html);
          paginationId.innerHTML = html;
       }
       else if(curPage>4)
       {
          html = appendItem(pageTotal,curPage,html);
          paginationId.innerHTML = html;
       }
    }
    // 顯示到頁(yè)面上的html字符串
    // var html = "<ul>  ";
    // html = appendItem(pageTotal,curPage,html);
    html += "</ul>";
    // 顯示至頁(yè)面中
    paginationId.innerHTML = html;
 }
 
 /**
  * @name 繪制分頁(yè)內(nèi)部調(diào)用方法,根據(jù)不同頁(yè)碼來分析顯示樣式
  * @author camellia
  * @date 20200703
  * @param pageTotal 總頁(yè)數(shù)
  * @param curPage 當(dāng)前頁(yè)
  * @param html 顯示在頁(yè)面上的html字符串
  */
 function appendItem(pageTotal,curPage,html)
 {
    // 顯示頁(yè)
    var showPage = 8;
    // 總頁(yè)數(shù)大于XX頁(yè)的時(shí)候,中間默認(rèn)...
    var maxPage = 9;
    // 開始頁(yè)
    var starPage = 0;
    // 結(jié)束頁(yè)
    var endPage = 0;
    // 首先當(dāng)前頁(yè)不為1的時(shí)候顯示上一頁(yè)
    if(curPage != 1)
    {
       html += "<li><a data-id = 'prev' > << </a></li> ";
    }
    // 當(dāng)總頁(yè)數(shù)小于或等于最大顯示頁(yè)數(shù)時(shí),首頁(yè)是1,結(jié)束頁(yè)是最大顯示頁(yè)
    if(pageTotal <= maxPage)
    {
       starPage = 1;
       endPage = pageTotal;
    }
    else if(pageTotal>maxPage && curPage<= showPage)
    {
       starPage = 1;
       endPage = showPage;
       if(curPage == showPage)
       {
          endPage = maxPage;
       }
    }
    else
    {
       if(pageTotal == curPage)
       {
          starPage = curPage - 3;
          endPage = curPage;
       }
       else
       {
          starPage = curPage - 2;
          endPage = Number(curPage) + 1;
       }
 
       html += "<li><a data-id = '1'> 1 </a></li> ";
       html += "<li><a data-id='false'> ... </a></li> ";
    }
    var i = 1;
    for(let i = starPage;i <= endPage;i++)
    {
       if(i==curPage)
       {
          html += "<li ><span>"+ i +"<span data-id="+i+"></span></span></li>";
       }
       else
       {
          html += "<li ><a data-id = "+ i +">"+i+"</a></li>";
       }
    }
 
 
    if(pageTotal<=maxPage)
    {
       if(pageTotal != curPage)
       {
          html += "<li><a data-id='next' > >> </a></li> ";
       }
    }
    else
    {
       if(curPage < pageTotal-2)
       {
          html += "<li><a data-id='false'> ... </a></li> ";
       }
       if(curPage <= pageTotal-2)
       {
          html += "<li><a data-id = "+pageTotal+" > "+pageTotal+" </a></li> ";
       }
       if(pageTotal != curPage)
       {
          html += "<li><a data-id = 'next' > >> </a></li> ";
       }
    }
    return html;
 }

 調(diào)用上邊的分頁(yè)代碼:

// 繪制分頁(yè)碼
 var pageOptions = {'pageTotal':result.pageNumber,'curPage':result.page,paginationId:'pages'};
 dynamicPagingFunc(pageOptions);

我這里把分頁(yè)的樣式是引用的公共css中的文件,這里就不展示了,將你的分頁(yè)html代碼把我的代碼替換掉就好。

參數(shù)的聚體解釋以及函數(shù)中用到的參數(shù),備注基本都已給出。

下面這部分是點(diǎn)擊各個(gè)頁(yè)碼時(shí),請(qǐng)求數(shù)據(jù)及重回頁(yè)碼的部分

/**
 * @name 分頁(yè)點(diǎn)擊方法,因?yàn)轫?yè)面html是后生成的,所以需要使用ON方法進(jìn)行綁定
 * @author camellia
 * @date 20200703
 */
 $(document).on('click', '.next', function()
 {
     layer.load(0, {shade: false});
     // 獲取當(dāng)前頁(yè)碼
     var obj = $(this).attr('data-id');
     // 獲取前一頁(yè)的頁(yè)碼,點(diǎn)擊上一頁(yè)以及下一頁(yè)的時(shí)候使用
     var curpages = $("li .sr-only").attr('data-id');
     // 點(diǎn)擊下一頁(yè)的時(shí)候
     if(obj == 'next')
     {
         obj = Number(curpages) + 1;
     }
     else if(obj == 'prev')// 點(diǎn)擊上一頁(yè)的時(shí)候
     {
         obj = curpages - 1;
     }
     $.ajax({
         //幾個(gè)參數(shù)需要注意一下
         type: "POST",//方法類型
         dataType: "json",//預(yù)期服務(wù)器返回的數(shù)據(jù)類型
         url: "?r=xxx/xxx-xxx" ,//url
         data: {'page':obj},
         success: function (result)
         {
             // 將列表部分的html清空
             document.getElementById('tbody').innerHTML = '';
             // 重新繪制數(shù)據(jù)列表
             drawPage(result.dbbacklist);
             // 繪制分頁(yè)碼
             var pageOptions = {'pageTotal':result.pageNumber,'curPage':result.page,paginationId:'pages'};
             dynamicPagingFunc(pageOptions);
             layer.closeAll();
         },
         error : function() {
             alert("異常!");
         }
     });
 });

總結(jié)

到此這篇關(guān)于javascript動(dòng)態(tài)分頁(yè)實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)js動(dòng)態(tài)分頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript實(shí)現(xiàn)的簡(jiǎn)單拖拽效果

    JavaScript實(shí)現(xiàn)的簡(jiǎn)單拖拽效果

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)的簡(jiǎn)單拖拽效果,涉及javascript針對(duì)鼠標(biāo)事件與頁(yè)面樣式的操作技巧,需要的朋友可以參考下
    2015-06-06
  • JavaScript數(shù)組排序小程序?qū)崿F(xiàn)解析

    JavaScript數(shù)組排序小程序?qū)崿F(xiàn)解析

    這篇文章主要介紹了JavaScript數(shù)組排序小程序?qū)崿F(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • package.json中homepage屬性的作用詳解

    package.json中homepage屬性的作用詳解

    這篇文章主要介紹了package.json中homepage屬性的作用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 淺談js中的attributes和Attribute的用法與區(qū)別

    淺談js中的attributes和Attribute的用法與區(qū)別

    這篇文章主要介紹了淺談js中的attributes和Attribute的用法與區(qū)別,attributes可以獲取一個(gè)對(duì)象中的一個(gè)屬性,attributes 屬性返回指定節(jié)點(diǎn)屬性的集合,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • javascript表單正則應(yīng)用

    javascript表單正則應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了javascript表單正則應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • JS小游戲之象棋暗棋源碼詳解

    JS小游戲之象棋暗棋源碼詳解

    這篇文章主要介紹了JS小游戲之象棋暗棋源碼詳解,對(duì)游戲源碼進(jìn)行了較為詳細(xì)的分析,并附帶完整實(shí)例代碼供大家學(xué)習(xí)參考,需要的朋友可以參考下
    2014-09-09
  • 微信、QQ、微博、Safari中使用js喚起App

    微信、QQ、微博、Safari中使用js喚起App

    本篇文章主要介紹了js在微信、微博、QQ、Safari喚起App的解決方案,有這方面需要的朋友參考下吧。
    2018-01-01
  • 從JQuery源碼分析JavaScript函數(shù)的apply方法與call方法

    從JQuery源碼分析JavaScript函數(shù)的apply方法與call方法

    這篇文章主要介紹了從JQuery源碼分析JavaScript函數(shù)的apply方法與call方法,本文結(jié)合JQuery源碼和js高級(jí)程序設(shè)計(jì)再次探究apply方法與call方法,需要的朋友可以參考下
    2014-09-09
  • IE/FireFox具備兼容性的拖動(dòng)代碼

    IE/FireFox具備兼容性的拖動(dòng)代碼

    IE/FireFox具備兼容性的拖動(dòng)代碼...
    2007-08-08
  • 純文字版返回頂端的js代碼

    純文字版返回頂端的js代碼

    這篇文章介紹了純文字版返回頂端的js代碼,有需要的朋友可以參考一下
    2013-08-08

最新評(píng)論

台江县| 衡东县| 无为县| 岳普湖县| 房山区| 台北县| 于都县| 舒城县| 抚宁县| 琼海市| 扎兰屯市| 平果县| 拜城县| 茶陵县| 恩平市| 颍上县| 普定县| 云林县| 上杭县| 通山县| 丰宁| 海宁市| 乳山市| 张北县| 嘉禾县| 阿图什市| 绍兴市| 克什克腾旗| 海口市| 龙南县| 五寨县| 长春市| 噶尔县| 勃利县| 新安县| 盈江县| 确山县| 获嘉县| 漠河县| 东光县| 开平市|