網站前端_JavaScript-項目經驗.純JavaScript實現客戶端的分頁功能?

項目簡介:


說明: 此項目屬於醫院電子病例系統,由於歷史原因,整個系統後臺基於Java開發,前端使用Html+CSS+原生JavaScript,項目功能模塊要求必須純JS實現,而此次的任務是爲住院病例頁面編寫一個客戶端分頁功能.


實現思路:


1. 基於客戶端分頁的前提是數據已經加載完畢,所以此功能模塊必須等待數據加載完畢後再加載

2. 基於客戶端分頁的首頁只需要顯示24個患者信息即可

3. 上一頁/當前頁/下一頁功能類似,基於當前頁面傳遞同樣的參數(頁碼, 限制患者數),所以自然而然想到了遞歸,但需要判斷一下上一頁或下一頁有沒有超出範圍,超出返回false即可.


實現代碼:

// 分頁功能 - 2017-01-16 14:36:36 by 李滿滿
function goPage(num, size){
    // 當前頁碼
    var curPageNum = num;
    // 當前頁面顯示人數
    var pageSize = size;
    // 獲取大的DIV
    var divBox = document.getElementById('odivBox');
    // 獲取大DIV下的子元素
    var divChilds = [];
    var allChilds = divBox.childNodes;
    for(var i=0; i<allChilds.length;i++){
        if(allChilds[i].nodeType!==1){
            continue;
        };
        divChilds.push(allChilds[i]);
    };
    // 獲取總人數
    var totalPeople = divChilds.length;
    // 獲取總頁數
    var totalPages = 0;
    if((totalPeople/pageSize)>parseInt(totalPeople/pageSize)){
        totalPages = parseInt(totalPeople/pageSize) + 1;
    }else{
        totalPages = parseInt(totalPeople/pageSize);
    };
    // curPageNum的開始位置
    var startNum = (curPageNum-1)*pageSize+1;
    // curPageNum的結束位置
    var endNum = curPageNum*pageSize
    // 當結束位置大於總人數時將總人數作爲結束位置
    endNum = (endNum>totalPeople)?totalPeople:endNum;
    // 遍歷隱藏除了當前頁碼應該顯示的DIV
    for(var i=1; i<(totalPeople+1); i++){
        var curPeople = divChilds[i-1];
        if(i>=startNum && i<=endNum){
            // 兼容IE,IE下必須display:inline
            if(mb=='IE'){
                curPeople.style.display = 'inline';
            }else{
                curPeople.style.display = 'inline-block';
            }
            
        }else{
            curPeople.style.display = 'none';
        };
    };
    // 設置上一頁/下一頁內容區
    var prePage = document.getElementById('prePage');
    var nextPage = document.getElementById('nextPage');
    prePage.onclick=function(){
        if(curPageNum<=1){
            return false;
        };
        goPage(curPageNum-1, pageSize);
    };
    nextPage.onclick=function(){
        if(curPageNum>=totalPages){
            return false;
        };
        goPage(curPageNum+1, pageSize);
    };
};
goPage(1, 24);


效果展示:

wKiom1h8lAOS2fT2AAM4FW7Q-WE821.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章