前端分页(详细步骤)

一、思路

1.设置全局变量,当前页,总页数,总条数,每页显示多少条,所有页数据,当前页数据,start(总数据开始截取位置)、end(总数据结束截取位置)

2.调用接口,请求到所有的数据后,改变相应的全局变量

3.通过对总数据进行filter过滤得到当前页数据,然后把数据渲染到表格上,

4.其他操作:如页码的点击、左右箭头的点击都会改变当前页的内容,就是改变相应全局变量,然后重新过滤当前页数据,然后进渲染到页面上

二、具体步骤

1.定义变量

//当前页
let nowPage = 1

// 每页显示多少条
let pageCount = 2

// 总页数
let totalPage
    
// 总条数
let totalNumber

// 总内容
let totalArr

// 当前页内容
let pageArr

//总数据过滤开始的位置
let start

//总数据过滤结束的位置
let end

//判断搜索还是展现数据(不用管)
let flag = true

2.调用接口

//基于jQuery
$(function() {
    get_cxc_table_data()
})

// 请求数据
function get_cxc_table_data() {
    flag = true
    $.ajax({
        url: BASEURL + TEAMCONTRACTLIST,
        type: 'post',
        success(res) {
    	   //改变相应的全局变量
           //总条数
            totalNumber = res.data.length
            //所有数据
            totalArr = res.data
            //渲染表格的方法
            addTable(totalArr, nowPage, pageCount)
             // 创建页数的方法
            addPage(totalArr.length)
        }
    })
}

3.渲染表格

// 动态添加到table表格中
//@params arr:渲染的数据
//@params now:当前页
//@params count:每页显示几条数据
function addTable(arr, now, count) {
    // 将之前的表格清空
    $('#teamList').html('')

	//渲染的字符串
    let tr = ''
	//过滤总数据开始的位置和结束的位置
	//规律
	//(当前页数-1)*每页显示几条数据<**当前页的数据**<当前页*每页显示几条数据
    start = (now - 1) * count
    end = now * count

    // 过滤中数据得到当前页数据 
    pageArr = arr.filter((item, index) => {
        return index >= start && index < end
    })
    //循环当前页的数据到表格中
    pageArr.forEach(item => {
        console.log(item);
        tr += `
            <tr>
            <td><a href="lookfamilydoctor.html?tid=${item.d_id}" style="color: #1D65A6;">${item.d_name}						   </a></td>
            <td>${item.d_sex}</td>
            <td>${item.d_sid}</td>
            <td>${item.d_tel}</td>
            <td>${item.d_join}</td>
            <td>${item.d_feature}</td>
            <td>
                <button data-id=${item.d_id} type="button" class="btn btn-danger cxc_xiugai"><span
                        class="iconfont icon-xiugai">修改</span></button>
                <button data-id=${item.d_id} type="button" class="btn btn-warning shanchuzwy" ><span
                        class="iconfont icon-shanchu">删除</span></button>
            </td>
        </tr>
        `
    });
    $('#teamList').append(tr)
}

4.动态创建页数

// 动态创建页数
function addPage(length) {
    // 将之前页码等清空
    $('.zwy_par').html('')
    //总页数
    totalPage = Math.ceil(length / pageCount)

    // 添加总页数
    let allPage = `
        <div id='zwylb4' class='zwy_par'>
        <div id="zwylb1">共有${totalNumber}条数据</div>
    </div>
        `
    $('#zwylb2').before(allPage)

    // 将之前的清空
    $('#zwylb3').html('')

    // 添加左箭头
    let str
    str = `
    <button type="button"  class="btn btn-default cxc_left_button" ;background-color: #fff;">
                                                < </button>
    `
     // 添加页码
    for (let i = 1; i <= totalPage; i++) {
        str += `
         <button type="button" class="btn btn-default  cxc_button">${i}</button>
        `
    }
    // 添加右箭头
    str += `
    <button type="button" class="btn btn-default cxc_right_button" ;">></button>
    `
    $('#zwylb3').append(str)
}

5.其他方法

点击改变相应的全局变量,重新渲染就可以了

// 每页显示多少条
$('.zwywb_child').on('change', '#zwylb2', function() {
    console.log(this);
    pageCount = $('#zwylb2>option:selected').val()
    get_cxc_table_data()
})

//左右箭头的点击,做越界判断
$(document).on('click', '.cxc_left_button', function() {
    if (nowPage > 1) {
        nowPage--
        get_cxc_table_data()
    }
})

$(document).on('click', '.cxc_right_button', function() {
    if (nowPage < totalPage) {
        nowPage++
        get_cxc_table_data()
    }
})

// 页码的点击
$(document).on('click', '.cxc_button', function() {
    nowPage = $(this).text()
    $('#zwlb4').val($(this).text())
    if (flag == true) {
        get_cxc_table_data()
    } else {
        searchDoctor()
    }
})

// 输入跳转到多少页回车跳转
$('#zwlb4').on('change', function(e) {
    if ($('#zwlb4').val() <= totalPage && $('#zwlb4').val() > 0) {
        nowPage = $('#zwlb4').val()
        get_cxc_table_data()
    }
})
  • 11
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue前端分页可以通过以下步骤实现: 1. 在Vue组件中定义一个数组,用于存放所有数据。 2. 定义一个变量,用于存放每页显示的数据条数。 3. 定义一个变量,用于存放当前页码。 4. 定义一个计算属性,用于计算总页数。 5. 定义一个方法,用于获取当前页的数据。 6. 在页面中显示当前页的数据。 7. 定义上一页和下一页的方法,用于切换页码。 8. 在页面中显示分页组件,包括上一页、下一页、页码等。 以下是一个简单的示例代码: ```html <template> <div> <ul> <li v-for="item in currentPageData">{{ item }}</li> </ul> <div> <button @click="prevPage">上一页</button> <span>{{ currentPage }}/{{ totalPages }}</span> <button @click="nextPage">下一页</button> </div> </div> </template> <script> export default { data() { return { dataList: ['数据1', '数据2', '数据3', '数据4', '数据5', '数据6', '数据7', '数据8', '数据9', '数据10'], pageSize: 3, currentPage: 1 } }, computed: { totalPages() { return Math.ceil(this.dataList.length / this.pageSize) }, currentPageData() { const start = (this.currentPage - 1) * this.pageSize const end = start + this.pageSize return this.dataList.slice(start, end) } }, methods: { prevPage() { if (this.currentPage > 1) { this.currentPage-- } }, nextPage() { if (this.currentPage < this.totalPages) { this.currentPage++ } } } } </script> ``` 在这个例子中,我们通过计算属性`totalPages`计算出总页数,然后通过方法`currentPageData`获取当前页的数据。通过按钮调用方法`prevPage`和`nextPage`来切换页码。在页面中,我们显示当前页的数据,并显示上一页、下一页和页码等信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值