zoukankan      html  css  js  c++  java
  • js完美实现table分页

    // JavaScript Document
    /**
    * js分页类
    * @param iAbsolute 每页显示记录数
    * @param sTableId 分页表格属性ID值,为String
    * @param sTBodyId 分页表格TBODY的属性ID值,为String,此项为要分页的主体内容
    * @Version 1.0.0
    * @author 辛现宝 2007-01-15 created
    * var __variable__; private
    * function __method__(){};private
    */
    function Page(iAbsolute, sTableId, sTBodyId,sPageId) {
        this.absolute = iAbsolute; //每页最大记录数
        this.tableId = sTableId;
        this.tBodyId = sTBodyId;
        this.rowCount = 0; //记录数
        this.pageCount = 0; //页数
        this.pageIndex = 0; //页索引
        this.__oTable__ = null; //表格引用
        this.__oTBody__ = null; //要分页内容
        this.__dataRows__ = 0; //记录行引用
        this.__oldTBody__ = null;
        this.pageId = sPageId;//显示当前页数的span的ID
    
        this.__init__(); //初始化;
       
    };
    /*
    初始化
    */
    Page.prototype.__init__ = function () {
        this.__oTable__ = document.getElementById(this.tableId); //获取table引用
        this.__oTBody__ = this.__oTable__.tBodies[this.tBodyId]; //获取tBody引用
        this.__pageInnerDiv__ = document.getElementById(this.pageId);
        this.__dataRows__ = this.__oTBody__.rows;
        this.rowCount = this.__dataRows__.length;
        try {
            this.absolute = (this.absolute <= 0) || (this.absolute > this.rowCount) ? this.rowCount : this.absolute;
            this.pageCount = parseInt(this.rowCount % this.absolute == 0
    ? this.rowCount / this.absolute : this.rowCount / this.absolute + 1);
        } catch (exception) { }
    
        this.__updateTableRows__();
    };
    /*
    下一页
    */
    Page.prototype.nextPage = function () {
        if (this.pageIndex + 1 < this.pageCount) {
            this.pageIndex += 1;
            this.__updateTableRows__();
        }
    };
    /*
    上一页
    */
    Page.prototype.prePage = function () {
        if (this.pageIndex >= 1) {
            this.pageIndex -= 1;
            this.__updateTableRows__();
        }
    };
    /*
    首页
    */
    Page.prototype.firstPage = function () {
        if (this.pageIndex != 0) {
            this.pageIndex = 0;
            this.__updateTableRows__();
        }
    };
    /*
    尾页
    */
    Page.prototype.lastPage = function () {
        if (this.pageIndex + 1 != this.pageCount) {
            this.pageIndex = this.pageCount - 1;
            this.__updateTableRows__();
        }
    };
    /*
    页定位方法
    */
    Page.prototype.aimPage = function (iPageIndex) {
        if (iPageIndex > this.pageCount - 1) {
            this.pageIndex = this.pageCount - 1;
        } else if (iPageIndex < 0) {
            this.pageIndex = 0;
        } else {
            this.pageIndex = iPageIndex;
        }
        this.__updateTableRows__();
    };
    /*
    执行分页时,更新显示表格内容
    */
    Page.prototype.__updateTableRows__ = function () {
        var iCurrentRowCount = this.absolute * this.pageIndex;
        var iMoreRow = this.absolute + iCurrentRowCount > this.rowCount ? this.absolute + iCurrentRowCount - this.rowCount : 0;
        var tempRows = this.__cloneRows__();
        //alert(tempRows === this.dataRows);
        //alert(this.dataRows.length);
        var removedTBody = this.__oTable__.removeChild(this.__oTBody__);
        var newTBody = document.createElement("TBODY");
        newTBody.setAttribute("id", this.tBodyId);
    
        for (var i = iCurrentRowCount; i < this.absolute + iCurrentRowCount - iMoreRow; i++) {
            newTBody.appendChild(tempRows[i]);
        }
        this.__oTable__.appendChild(newTBody);
        /*
        this.dataRows为this.oTBody的一个引用,
        移除this.oTBody那么this.dataRows引用将销失,
        code:this.dataRows = tempRows;恢复原始操作行集合.
        */
        this.__dataRows__ = tempRows;
        this.__oTBody__ = newTBody;
        //alert(this.dataRows.length);
        //alert(this.absolute+iCurrentRowCount);
        //alert("tempRows:"+tempRows.length);
        document.getElementById(this.pageId).innerHTML = "当前页:" + (this.pageIndex + 1);
    };
    /*
    克隆原始操作行集合
    */
    Page.prototype.__cloneRows__ = function () {
        var tempRows = [];
        for (var i = 0; i < this.__dataRows__.length; i++) {
            /*
            code:this.dataRows[i].cloneNode(param), 
            param = 1 or true:复制以指定节点发展出去的所有节点,
            param = 0 or false:只有指定的节点和它的属性被复制.
            */
            tempRows[i] = this.__dataRows__[i].cloneNode(1);
        }
        return tempRows;
    };

    显示使用例子

    <!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>
        <title></title>
    </head>
    <body>
        <table id="divtable">
                    <tbody id="group_one">
                        <tr>
                            <td>
                                54898498
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                4684646
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                4987/7874
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                4654985498
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                74987498/
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                498496496
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                          <tr>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                            <td>
                                123213
                            </td>
                        </tr>
                    </tbody>
                </table>
                <span id="s"></span>
                <a href="#" onclick="page.firstPage();">首页</a>
    
    
                <a href="#" onclick="page.prePage();">上一页</a>
                        
                <a href="#" onclick="page.nextPage();">下一页</a>
                       
                <a href="#" onclick="page.lastPage();">尾页</a>
                       
                <span id="pageindex"></span>
       <script type="text/javascript">
             $(document).ready(function() {
                   page = new Page(3, 'divtable', 'group_one', "pageindex");
             });
              
       </script>
       <script src="JS/JSPager.js" type="text/javascript"></script>
    </body>
    </html>
     
  • 相关阅读:
    377 TODOMVC:准备工作,配置 vue,列表渲染,添加任务,删除任务,编辑任务 ,Footer 的显示与隐藏
    376 vue指令:v-model (常用),v-text 和 v-html,v-bind (常用),操作样式,v-on,v-for,v-pre,v-once,v-cloak
    375 vue数据双向绑定演示:一个 input + v-model,Object.defineProperty,数据双向绑定的原理简单实现
    374 vue起步
    373 Vue 介绍,框架和库的区别 ,MVC + MVVM
    实现一个vue-router插件
    浅谈react context
    Flutter网络请求与JSON解析
    Vue中组件
    vue数据监听
  • 原文地址:https://www.cnblogs.com/myhappylife/p/3875308.html
Copyright © 2011-2022 走看看