天天看點

分頁界面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>無标題文檔</title>

<style type="text/css">

.firs{ color:#f00; margin-left:5px; cursor:pointer}

.last{ color:green; margin-left:5px; cursor:pointer}

.prev{ color:#fc0; margin-left:5px;cursor:pointer }

.next{ color:#fcc; margin-left:5px; cursor:pointer}

.norm{ margin-left:5px; cursor:pointer}

.sele{ margin-left:5px;font-weight:bold;cursor:pointer}

</style>

</head>

<body>

<div id="panel"></div>

<script>

function Pager() {

    var o =this;

    o.setting = {

        p: 1,    //目前鎖定頁

        pc: 0,   //總頁數

        size: 5, //每頁的頁碼數量

        fun: function (p) { } //外部調用的function

    }

    o.css = {

        firs: 'firs',//首頁 className

        last: 'last',//末頁 className

        prev: 'prev',//上一頁 className

        next: 'next',//下一頁 className

        norm: 'norm',//未選中頁 className

        sele: 'sele' //選中頁 className

    }

    var getSpan = function () {

        return document.createElement("span");

    }

    var getP = function (p, txt) {

        txt = txt || p;

        var _span = getSpan();

        _span.innerHTML = txt;

        _span.setAttribute("p", p);

        _span.onclick = function () {

   o.setting.p = p;

            o.setting.fun(this.getAttribute("p"));

        }

        return _span;

    }

    var getCSSP = function (p) {

        var CSSP = getP(p);

        if (p == o.setting.p) {

            CSSP.className = o.css.sele;

        } else {

            CSSP.className = o.css.norm;

        }

        return CSSP;

    }

 //獲得目前設定下的頁碼 html 元素

    o.get = function () {

        var _docFrag = document.createDocumentFragment();

        //上一頁

        if (o.setting.p > 1) {

            var _firstP = getP(1, '首頁');

            _firstP.className = o.css.firs;

            _docFrag.appendChild(_firstP);

            var _prevP = getP(o.setting.p - 1, '上一頁');

            _prevP.className = o.css.prev;

            _docFrag.appendChild(_prevP);

        }

        if (o.setting.pc < o.setting.size) {

            for (var p = 1; p <= o.setting.pc; p++) {

                var _span = getCSSP(p);

                _docFrag.appendChild(_span);

            }

        } else {

            var star_p = o.setting.p - (o.setting.size - 1) / 2;

   if(star_p>0){

    for (var i = 0; i < o.setting.size; i++) {

     var p = star_p + i;

     if (p <= o.setting.pc) {

      var _span = getCSSP(p);

      _docFrag.appendChild(_span);

     }

    }

   }else{

    for(var p = 1; p<= o.setting.size;p++){

     var _span = getCSSP(p);

     _docFrag.appendChild(_span);

    }

   }

        }

        //下一頁

        if (o.setting.p < o.setting.pc) {

            var _nextP = getP(o.setting.p + 1, '下一頁');

            _nextP.className = o.css.next;

            _docFrag.appendChild(_nextP);

            var _lastP = getP(o.setting.pc, '末頁');

            _lastP.className = o.css.last;

            _docFrag.appendChild(_lastP);

        }

        return _docFrag;

    }

}

//demo

var panel = document.getElementById('panel');

var p = new Pager();

p.setting.p = 20;  //設定目前鎖定頁 為 20

p.setting.pc = 30; //設定 總頁數 為 30

p.setting.fun = function(p_num){ //當點選 某頁的時候 觸發的函數

 //ajax.ashx?action=getmsg&p=p_num

 panel.innerHTML = '';

 panel.appendChild(p.get());

}

panel.appendChild(p.get()); //把頁碼append 到 容器中

</script>

</body>

</html>

繼續閱讀