js实现简单分页浏览

最后实现如下

html内容

<html>
    <head>
        <title>title</title>
        <style>
        .block:nth-of-type(odd){
            width: 200px;
            height: 200px;
            background-color: red;
            display: inline-block;
            margin: 10px;
        }
        .block:nth-of-type(even){
            width: 200px;
            height: 200px;
            background-color: yellow;
            display: inline-block;
            margin: 10px;
        }
        #bigBox{
            width: 900px;
            height: 500px;
            border: 5px solid grey;
        }
        #barcon{
            width: 900px;
            text-align: center;
            position: absolute;
            top: 510px;
        }
        #prev,#next{
            font-size: 24px;
            display: inline-block;
            cursor: pointer;
        }
        .num{
            display: inline-block;
            background-color: white;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            margin: 5px;
            cursor: pointer;
        }
        #on{
            color: white;
            background-color: gray;
        }
        </style>
    </head>
    <body onload="goPage(1,8)">
        <div id="bigBox"> //里面还没有砖块,用js动态插入
            <div id="barcon"> //这个是底下的导航
                <div id="prev">&lt;</div>
                <div id="next">&gt;</div>
                <p id="totalPage">共X页</p>
            </div>
        </div>

    </body>
</html>

添加js

  • 随机生成数作为砖块总数
    var a = Math.floor(Math.random()*10+50)
  • 生成砖块,插入html中
    var fatherBox = document.getElementById("bigBox")

    for(var i = 0; i < a; i++){
        var aBlockSample = document.createElement("div")
        aBlockSample.className = "block"
        fatherBox.insertBefore(aBlockSample,document.getElementById("barcon"))
    }
  • 分页函数
    function goPage(pno,psize){
        var pageSize = psize //每页记录数
        var currentPage = pno //当前页数
        var totalPage = 0 //总页数
        
        //计算总页数
        if(a/pageSize > parseInt(a/pageSize)){
            totalPage = parseInt(a/pageSize) + 1
        }else{
            totalPage = parseInt(a/pageSize)
        }

        //计算当前页显示的数据(多少到多少)
        var startBlock = (currentPage - 1) * pageSize + 1
        var endBlock = currentPage * pageSize
        endBlock = (endBlock > a)? a : endBlock
        console.log(startBlock)
        console.log(endBlock)

        //在startBlock和endBlock范围内的显示
        var blockList = document.getElementsByClassName("block")
        for(var i = 1; i < (a+1); i++){
            var iBlock = blockList[i-1]
            if(i>=startBlock && i<=endBlock){
                iBlock.style.display = "inline-block"
            }else{
                iBlock.style.display = "none"
            }
        }
        
        //添加底部数字
        var barcon = document.getElementById("barcon")
        for(var i = 1; i<= totalPage; i++){
            var numSample = document.createElement("div")
            numSample.innerText = i 
            numSample.className = "num"
            if(i==currentPage){
                numSample.id = "on"
            }
            barcon.insertBefore(numSample,document.getElementById("next"))
        }

        //bottom
        var tempStr = "共"+a+"个砖块 分"+totalPage+"页  当前第"+currentPage+"页"
        document.getElementById("totalPage").innerText = tempStr

        
        var numList = document.getElementsByClassName("num")
        //clear number,否则会重复创造了数字
        function clear(){
            while(numList.length>0){
                barcon.removeChild(numList[0])
            }
        }
        
        //prev$next
        if(currentPage<=totalPage){
            if(currentPage >= 1 && currentPage < totalPage){
                document.getElementById("next").onclick = function(){
                    clear()
                    goPage(currentPage+1,8)
                }
            }
            if(currentPage > 1 && currentPage <= totalPage){
                document.getElementById("prev").onclick = function(){
                    clear()
                    goPage(currentPage-1,8)
                }
            }
        }

        //click number to go 
        for(var i = 0; i < totalPage; i++){
            (function(i){
                numList[i].addEventListener("click",function(){
                    clear()
                    goPage(i+1,8)
                })
            })(i)
        }
    }
    
posted @ 2018-07-12 21:46  五个唔  阅读(378)  评论(0编辑  收藏  举报