JS简单原生分页

html部分随便写即可
不同需求写不同样式
html
<div class="container main clear"> <ul> </ul> </div> <div class="container odd"> </div>
这里简单些一个ul标签用来写入内容
odd呢代表我们分页要写入的a标签页数

这里后台我用到了node来书写,不过原理是相通的,用其他后端语言也是可以实现的。
node

const express=require('express') //建立一个服务器
const mysql=require('mysql')    //建立mysql服务器
const url=require('url')        //解析Get参数
const qs=require('querystring')  //将Get参数转换为对象


const db=mysql.createPool({           //连接服务器
    host:'localhost',                  //端口
    user:'root',                         //账号
    password:'root',                    //密码
    database:'nz2002',                //库名
    port:3306                        //端口号
})

const app=express()                //建立服务器
app.use(express.static('src'))        //监听文件夹
app.use(express.urlencoded())          //读取post请求数据不过这里没有用到,不用管

app.get('/data_content',(req,res)=>{        //接收Get请求
    let objVal=url.parse(req.url)           
    let obj=qs.parse(objVal.query)              //获取参数并将参数转换为对象格式
    let startLine=(obj.page-1)*obj.line          //获取当前的参数的索引下标,这个公式是死的  ,可以记住 (当前页数-1) *要显示的条数   这样我们就可以获取到每页的第一条数据的索引
    let sql=`select * from \`goods\`  where  \`cat_one_id\`='${obj.cat_one_id}'  limit  ${startLine} ,${obj.line}`
    //执行mysql语句 的分页查询  由于这里我只是单独查询数据库的一类  所以使用到了where 这个不是必须的  可以根据情况来使用
    db.query(sql,(err,reselt)=>{       //执行mysql语句
        if(err!==null){              //判断如果有误,就显示错误语句,如果显示正确就是null,这个可以自己输出看看,这里就不做演示
            console.log(err)   
            return
        }
        
    //  res.json(reselt)
         let sql1=`select * from \`goods\` where  \`cat_one_id\`='${obj.cat_one_id}'`        //再次执行MySQL语句,这里主要是获取他的所有条数,并且来判断我们可以分为几页,然后生成相应的a标签
    db.query(sql1,(err1,reselt1)=>{
        if(err!==null){
            console.log(err1)
            return
        }
        // res.json(reselt1)
        let num=reselt1.length     //总条数
        let odd=Math.ceil(num/obj.line)  //能分几页
       reselt.forEach(function(item){       //给所有的参数赋值
                item.num=num                  //总条数
                item.odd=odd           //总页数
       })
       res.json(reselt)              //返回数据
    })
    })
   
})
app.listen(8080,()=>{
    console.log("监听成功")
})

JS接收部分

<script>
        oAjax(1)   //默认第一次执行是第一页的内容
       function oAjax(page){
        $.ajax({
            url:'/data_content',  //发送参数
            type:'get',          //发送请求
            data:{cat_one_id:'食品酒水',line:8,page:page}, //发送数据
            dataType:"json",                  //接收数据格式
            success:function(res){                //接受数据
                // console.log(res)               //这里的res是一页的8条数据
                let str=''                  
                res.forEach(function(item){
                    str+=` <li>
                <div class="img"><img src="${item.goods_big_logo}" alt=""></div>
                <div class="content"><p>${item.goods_name}</p></div>
    
            </li>`
                })
                $('.main ul').html(str)    //将其写入到页面中
                let arr=''                 //生成a标签
                for(let i =1;i<= res[0].odd;i++){      //res[0].odd,使用0是因为最少他有1条数据,这样可以保证,只有1条数据也可以读取到  ,odd是我们后台穿过来的总页数
                      arr+=`<a href="JavaScript:;">${i}</a>`   //生成a标签
                }
                $('.odd').html(arr)   //将其写入
                let oA=document.querySelectorAll('.odd a')
             //获取到a标签
             
                oA.forEach(function(item){   //循环遍历a标签,点击a标签时候获取到他是第几页,之后再次调用,
                   item.onclick=function(){
                         oAjax(item.innerText)
         }
      })

            }
        })
       }
  
    </script>

效果图
在这里插入图片描述
如有不解,请在下方留言共同探讨!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值