万能js实现翻页,兼容各种浏览器(已测试)----屌丝版!

来源:互联网 发布:孕囊第三个数据最大 编辑:程序博客网 时间:2024/05/16 12:47

本js实现翻页是我现在初学js弄着完所写,很老土但很实用,兼容各种浏览器(已测试!),可以适用于从数据库读取数据之后对其进行分页。

以下是用到的js,页面引用为:<script type="text/javascript" src="js/page.js"></script>

// JavaScript Documentvar curPage=1;//记录当前页码var pageCount=12;//默认每页显示12条function GetId(_obj) {//获取所显示的记录return document.getElementById(_obj);}function ChangePage(){                var pageNums=0;                var recordNum=GetId("tabe").getElementsByTagName('tr').length-2;//获取当前共有多少条记录总数,因有第一条栏目名称和最后一条是翻页,所以要减去2var pageNumsOld=parseInt(recordNum%pageCount);        var allRecords=GetId("tabe").getElementsByTagName('tr');        if(pageNumsOld!=0)        {            pageNums=parseInt(parseInt(recordNum)/pageCount)+1;            }        else{            pageNums=parseInt(parseInt(recordNum)/pageCount);            }if((curPage==1)&&(recordNum>=pageCount))//默认显示第一页{var allRecords=GetId("tabe").getElementsByTagName('tr');//获取所有的内容for(var i=recordNum; i>pageCount; i--)//第一页显示前12条,12条之后的隐藏 {allRecords[i].className="thidden";   }}document.getElementById('pagenum').innerHTML=pageNums;//给总页数以及当前页码赋值document.getElementById('pagecount').innerHTML=recordNum;document.getElementById('showPage').value=1;//默认为第一页}function FirstPage()//首页{var pageNums=0;        var recordNum=GetId("tabe").getElementsByTagName('tr').length-2;//获取当前共有多少条记录总数,因有第一条栏目名称和最后一条是翻页,所以要减去2        var pageNumsOld=parseInt(recordNum%pageCount);        var allRecords=GetId("tabe").getElementsByTagName('tr');        if(pageNumsOld!=0)        {            pageNums=parseInt(parseInt(recordNum)/pageCount)+1;            }        else{            pageNums=parseInt(parseInt(recordNum)/pageCount);            }            var allRecords=GetId("tabe").getElementsByTagName('tr');            for(var i=recordNum; i>pageCount; i--)            {                allRecords[i].className="thidden";            }            for(var i=0; i<=pageCount; i++)            {                allRecords[i].className="tshow";            }            curPage=1;        document.getElementById('showPage').value=1;}function LastPage()//尾页{var pageNums=0;        var recordNum=GetId("tabe").getElementsByTagName('tr').length-2;//获取当前共有多少条记录总数,因有第一条栏目名称和最后一条是翻页,所以要减去2        var pageNumsOld=parseInt(recordNum%pageCount);        var allRecords=GetId("tabe").getElementsByTagName('tr');        if(pageNumsOld!=0)        {            pageNums=parseInt(parseInt(recordNum)/pageCount)+1;            if(recordNum>pageCount)            {                for(var i=recordNum; i>recordNum%pageCount; i--)    //第一页显示12条                {                    allRecords[i].className="tshow";                }                for(var i=recordNum-(recordNum%pageCount); i>0; i--)    //第一页显示12条                {                    allRecords[i].className="thidden";                }                }            }        else{            pageNums=parseInt(parseInt(recordNum)/pageCount);            if(recordNum>pageCount)            {                for(var i=recordNum; i>recordNum-pageCount; i--)    //第一页显示12条                {                    allRecords[i].className="tshow";                }                for(var i=recordNum-pageCount; i>0; i--)    //第一页显示12条                {                    allRecords[i].className="thidden";                }                }            }                curPage=pageNums;        document.getElementById('showPage').value=pageNums;}function PerPage()//上一页{var pageNums=0;        var recordNum=GetId("tabe").getElementsByTagName('tr').length-2;//获取当前共有多少条记录总数,因有第一条栏目名称和最后一条是翻页,所以要减去2        var pageNumsOld=parseInt(recordNum%pageCount);        var allRecords=GetId("tabe").getElementsByTagName('tr');        var currPage=parseInt(document.getElementById('showPage').value);            if(pageNumsOld!=0)        {            pageNums=parseInt(parseInt(recordNum)/pageCount)+1;                    }        else{            pageNums=parseInt(parseInt(recordNum)/pageCount);                    }        if(currPage>1)            {                var perPages=(currPage-1)*pageCount;                for(var i=perPages-pageCount;i<=perPages;i++)                {                    allRecords[i].className="tshow";                    }                for(var i=allRecords.length-2; i>perPages; i--)    //第一页显示12条                {                    allRecords[i].className="thidden";                }                for(var i=0; i<perPages-pageCount; i++)    //第一页显示12条                {                    allRecords[i].className="thidden";                }                }                    currPage--;        if(currPage>0)        document.getElementById('showPage').value=currPage;    }function NextPage()//下一页{var pageNums=0;        var recordNum=GetId("tabe").getElementsByTagName('tr').length-2;//获取当前共有多少条记录总数,因有第一条栏目名称和最后一条是翻页,所以要减去2        var pageNumsOld=parseInt(recordNum%pageCount);        var allRecords=GetId("tabe").getElementsByTagName('tr');        var currPage=parseInt(document.getElementById('showPage').value);        if(pageNumsOld!=0)        {            pageNums=parseInt(parseInt(recordNum)/pageCount)+1;                if(currPage<pageNums)        {            var frontPN=pageNums-1;            if(currPage==frontPN)    //此页是倒数第二页            {                for(var i=recordNum; i>recordNum%pageCount; i--)                    {                    allRecords[i].className="tshow";                }                for(var i=recordNum-(recordNum%pageCount); i>0; i--)                    {                    allRecords[i].className="thidden";                }                document.getElementById('showPage').value=pageNums;            }            else{                var perPages=(currPage+1)*pageCount;                for(var i=perPages-pageCount;i<perPages;i++)                {                    allRecords[i].className="tshow";                    }                for(var i=recordNum; i>perPages; i--)    //第一页显示12条                {                    allRecords[i].className="thidden";                }                for(var i=0; i<perPages-pageCount; i++)    //第一页显示12条                {                    allRecords[i].className="thidden";                }                    currPage++;                if(currPage<pageNums)                document.getElementById('showPage').value=currPage;                }        }        }        else{            pageNums=parseInt(parseInt(recordNum)/pageCount);                if(currPage<pageNums)            {                var perPages=parseInt((currPage+1)*pageCount);                for(var i=perPages-pageCount+1;i<=perPages;i++)                {                    allRecords[i].className="tshow";                    }                for(var i=recordNum; i>perPages; i--)    //第一页显示12条                {                    allRecords[i].className="thidden";                }                for(var i=1; i<=perPages-pageCount; i++)    //第一页显示12条                {                    allRecords[i].className="thidden";                }                    allRecords[0].className="tshow";                currPage++;                if(currPage<=pageNums)                document.getElementById('showPage').value=currPage;                }        }}function fastPage()//在input里面输入相应的页码,进行跳转{var pageNums=0;        var recordNum=GetId("tabe").getElementsByTagName('tr').length-2;//获取当前共有多少条记录总数,因有第一条栏目名称和最后一条是翻页,所以要减去2        var pageNumsOld=parseInt(recordNum%pageCount);        var allRecords=GetId("tabe").getElementsByTagName('tr');        var currPage=parseInt(document.getElementById('showPage').value);            if(pageNumsOld!=0)        {            pageNums=parseInt(parseInt(recordNum)/pageCount)+1;                if(currPage<=1)        {            for(var i=recordNum; i>pageCount; i--)            {                allRecords[i].className="thidden";            }            for(var i=0; i<=pageCount; i++)            {                allRecords[i].className="tshow";            }            currPage=1;            document.getElementById('showPage').value=currPage;            }        else if(currPage>=pageNums)        {            for(var i=allRecords.length-2; i>recordNum%pageCount; i--)    //第一页显示12条            {                allRecords[i].className="tshow";            }            for(var i=allRecords.length-2-(recordNum%pageCount); i>0; i--)    //第一页显示12条            {                allRecords[i].className="thidden";            }            currPage=pageNums;            document.getElementById('showPage').value=currPage;                    }        else{            var perPages=currPage*pageCount;            for(var i=perPages-pageCount;i<=perPages;i++)            {                allRecords[i].className="tshow";                }            for(var i=allRecords.length-2; i>perPages; i--)    //第一页显示12条            {                allRecords[i].className="thidden";            }            for(var i=0; i<perPages-pageCount; i++)    //第一页显示12条            {                allRecords[i].className="thidden";            }                document.getElementById('showPage').value=currPage;            }            }        else{            pageNums=parseInt(parseInt(recordNum)/pageCount);                if(currPage<=1)        {            for(var i=recordNum; i>pageCount; i--)            {                allRecords[i].className="thidden";            }            for(var i=0; i<=pageCount; i++)            {                allRecords[i].className="tshow";            }            currPage=1;            document.getElementById('showPage').value=currPage;            }        else if(currPage>=pageNums)        {            for(var i=recordNum; i>recordNum-pageCount; i--)    //第一页显示12条            {                allRecords[i].className="tshow";            }            for(var i=recordNum-pageCount; i>0; i--)    //第一页显示12条            {                allRecords[i].className="thidden";            }            currPage=pageNums;            document.getElementById('showPage').value=currPage;                    }        else{            var perPages=currPage*pageCount;            for(var i=perPages-pageCount+1;i<=perPages;i++)            {                allRecords[i].className="tshow";                }            for(var i=recordNum; i>perPages; i--)    //第一页显示12条            {                allRecords[i].className="thidden";            }            for(var i=1; i<perPages-pageCount; i++)    //第一页显示12条            {                allRecords[i].className="thidden";            }                allRecords[0].className="tshow";            document.getElementById('showPage').value=currPage;            }            }}
以下是页面HTML代码:

<!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></head><script type="text/javascript"s src="../js/page.js"></script><body onload="ChangePage()">     <table cellspacing="0" cellpadding="0" class="tabe" id="tabe">      <tr>        <th scope="col"><input type="checkbox"  /></th>        <th scope="col" onclick="ChangePage()">车牌号</th>        <th scope="col">车系</th>        <th scope="col">排量</th>        <th scope="col">年限</th>        <th scope="col">车主手机号</th>        <th scope="col">现行里程KM</th>        <th scope="col">预警提醒</th>        <th scope="col">操作</th>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>1.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>2.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>3.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>4.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>5.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>6.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>7.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>8.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>9.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>10.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>11.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td><input type="checkbox" /></td>        <td>京G00987</td>        <td>宝来</td>        <td>12.3L</td>        <td>2013款</td>        <td>13888888888</td>        <td>20000</td>        <td>距下次保养还有498km</td>        <td class="bfont"><a href="">短信通知</a> <a href="nav_maintain1.html">保养记录</a></td>      </tr>      <tr>        <td colspan="11" style=" background:#DDF4F6; line-height:32px;"><span class="fan" style="padding:0;"> <a href="#" onclick="FirstPage()">首页</a> <span style="cursor:pointer;" onclick="PerPage()">◀</span> <span><span>第</span>          <input value="1" type="text" class="fan_ye" id="showPage" onchange="fastPage()" />          <span>页</span></span> <span style="cursor:pointer;" onclick="NextPage()">▶</span> <a href="#" onclick="LastPage()">尾页</a> <span>共  <span id="pagenum">2</span>页  <span id="pagecount">24</span>条</span> </span></td>      </tr>    </table>    <script type="text/javascript"><!-- 此处作用是对鼠标经过的tr进行颜色改变 --> var obj=document.getElementById("tabe"); for(var i=0;i<obj.rows.length;i++){   obj.rows[i].onmouseover=function(){this.style.background="#FFFF99";}   obj.rows[i].onmouseout=function(){this.style.background="";} }</script> </body></html>
以下是CSS样式:
.tabe { line-height: 16px; collapse:collapse; width:914px; height:auto; border: solid 1px #c1c1c1; text-align:center;}.tabe td{ collapse:collapse; border: solid 1px #c1c1c1;}.tshow{}.thidden{display:none;}

以下是运行效果:


PS:小注:

可能有些同学会疑问,

        var recordNum=GetId("tabe").getElementsByTagName('tr').length-2;
        var pageNums=parseInt(recordNum/pageCount)+1;

这两行代码,每个都用到了,为什么不设置成全局变量?

因为这个版本是在页面呈现出来之前就要对所有内容进行分页,如果设置成全局变量,ChangePage()初始时将无法让其只显示12条。

本人只是初学,写的代码也不完善,如果有各位大神的指教或者一些同学有疑问,请加QQ:1740437  欢迎进行技术交流!

原创粉丝点击