我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JS处理数据实现分页功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JS处理数据实现分页功能

这几天有小伙伴讨论起了分页的相关问题,这里我也简单讲下前端如何简单便捷的利用Js(库)写出优雅,好用的分页工具。

分页是个很简单又超多接触的技术点,粗略来讲分如下两种:

真分页——每次根据页码、页大小获取数据并展示。

假分页——一次性获取所有数据,根据页码、页大小展示。

公认比较好的做法是真分页,这样可以避免很多问题(如内存占用过多)。

有一点需要注意,单纯的前端是无法独立完成数据分页的(废话),所以后端支持是必须的。

作为支持,webapi除了返回所请求的数据,还应返回数据总量以便计算页数:

如上图所示,我们可以看出数据总量27,分页大小10(这边只请求了10条数据)。

如果你拥有如上图的webapi的支持,就可以接着往下写了。

我使用对象字面量封装的方法:

var Post = {
    Url: function () {
        return "webAPI路径";
    },
    ///返回带分页信息
    //[ele]填充信息元素ID
    ///[ele2]填充分页元素ID
    //[tagName]信息元素一级元素名
    ///[tag2Name]信息元素二级元素名
    //[index]页码
    Pager: function (ele, ele2, tagName, tag2Name, index, where) {
        //页大小
        var size = $.cookie('pageSize') == undefined ? 10 : $.cookie('pageSize');
        //封装的Ajax
        Load(Post.Url(), {参数列表}, function (data) {<br data-filtered="filtered">        //展示数据
            $(ele).html(createHtml(data.rows, tagName, tag2Name));
            //设置分页信息
            $(ele2).attr('index', index).attr('rowcount', size).attr('total', data.total);
            //填充分页
            PagerTool(ele, ele2, Post, tagName, tag2Name, where);
        });
    }
}

Load、createHtml和PagerTool是我自己封装的几个方法,代码如下:

///公共加载方法
//[turl]访问地址
///[postData]提交数据(标准post格式)
//[callback]回调函数(可匿名)
function Load(turl, postData, callback) {
    jQuery.support.cors = true;
    try {
        $.ajax({
            url: turl,
            timeout: 10000,
            type: "post",
            data: postData,
            success: function (data) {
                if (data != null) {
                    Json = eval("(" + data + ")");
                    callback(Json);
                }
            }
        });
    } catch (e) {
        Mbox.Show(e.message);
    }
}
 
///创建Html结构
//[data]数据源
///[tagName]一级元素标签名称
//[tag2Name]二级元素标签名称
function createHtml(data, tagName, tag2Name) {
    var Html = '';
    for (var i = 0; i < data.length; i++) {
        Html += `<${tagName}>`;
        $.each(data[i], function (i, v) {
            Html += `<${tag2Name}>${v}</${tag2Name}>`;
        });
        Html += `</${tagName}>`;
    }
    return Html;
}

PagerTool方法:

//公共分页工具条
///[dataEle]数据主体
//[ele]分页主体
///[obj]被传入的类
//[where]条件
///[w]按照何种方式搜索
function PagerTool(dataEle, ele, obj, tag1, tag2, where) {
    var total = $(ele).attr('total') - 0;
    var rowcount = $(ele).attr('rowcount') - 0;
    var index = $(ele).attr('index') - 0;
    var count = total % rowcount == 0 ? total / rowcount : Math.floor(total / rowcount) + 1;
    var Html = '';
    Html += '<p class="page">';
    Html += '<a href="javaScript:void(0)" class="prePage">上一页</a>';
    for (var i = 1; i <= count; i++) {
        if (index != i) {
            Html += `<a href="javaScript:void(0)" class="nowPage">${i}</a>`;
        } else {
            Html += `<a href="javaScript:void(0)" class="nowPage" style="background:#ACDDEA; color:#226F83; border:#93D3E4 1px solid;">${i}</a>`;
        }
    }
    Html += '<a href="javaScript:void(0)" class="nextPage">下一页</a>';
    Html += '</p>';
    $(ele).html('').html(Html);
    //上一页
    $(ele).find('a[class=prePage]').bind('click', function () {
        var index = $(this).parent().parent().attr('index') - 0;
        if (index > 1) {
            $(this).parent().parent().attr('index', index - 1);
            obj.Pager(dataEle, ele, tag1, tag2, index - 1, where);
        }
    });
    //下一页
    $(ele).find('a[class=nextPage]').bind('click', function () {
        var index = $(this).parent().parent().attr('index') - 0;
        if (index < count) {
            $(this).parent().parent().attr('index', index + 1);
            obj.Pager(dataEle, ele, tag1, tag2, index + 1, where);
        }
    });
    //当前页
    $(ele).find('a[class=nowPage]').bind('click', function () {
        var index = $(this).parent().parent().attr('index') - 0;
        $(this).parent().parent().attr('index', $(this).text());
        obj.Pager(dataEle, ele, tag1, tag2, $(this).text(), where);
    });
}

调用方式会是这样的:

Post.Pager(testBox, pagerBox, 'ul', 'li', 1, `筛选数据的条件`);

使用了如上代码,即可按照所返回的json数据的格式自动映射到容器内(按照传入的tagName生成dom):

切换后效果:

分页工具条,生成在页面是这样的:

<p class="page"><br data-filtered="filtered">    <a href="javaScript:void(0)" class="prePage">上一页</a><br data-filtered="filtered">    <a href="javaScript:void(0)" class="nowPage" style="background:#ACDDEA; color:#226F83; border:#93D3E4 1px solid;">1</a><br data-filtered="filtered">    <a href="javaScript:void(0)" class="nowPage">2</a><br data-filtered="filtered">    <a href="javaScript:void(0)" class="nowPage">3</a><br data-filtered="filtered">    <a href="javaScript:void(0)" class="nextPage">下一页</a><br data-filtered="filtered"></p>

到此这篇关于JS处理数据实现分页功能的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JS处理数据实现分页功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中ListView分页加载数据功能实现

熟悉Android的朋友们都知道,不管是微博客户端还是新闻客户端,都离不开列表组件,可以说列表组件是Android数据展现方面最重要的组件,我们今天就要讲一讲列表组件ListView加载数据的相关内容。通常来说,一个应用在展现大量数据时,
2022-06-06

如何在MongoDB中实现数据分页功能

如何在MongoDB中实现数据分页功能概述:在大规模数据的处理过程中,数据分页是一项非常常见且重要的功能。它可以在处理海量数据时,只返回一部分数据,提高性能并降低系统负载。在MongoDB中,实现数据分页功能同样是一项重要的任务。本文将介绍
2023-10-22

php怎么实现数组分页功能

本篇内容主要讲解“php怎么实现数组分页功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么实现数组分页功能”吧!在php中可以通过数组分页函数array_slice()来实现分页功能,
2023-06-20

Android之ListView分页加载数据功能实现代码

什么是ListView分页加载数据功能呢?在现在的大数据时代,我们不可能把某些数据全部展示到界面,好比我们经常会看的QQ空间一样,当你看动态的时候,系统不可能会把所有好友的动态都展示在上面,你能看到的一般都是最新好友更新的动态,假如你要看非
2022-06-06

Vue+ElementUI如何实现分页功能查询mysql数据

这篇文章给大家分享的是有关Vue+ElementUI如何实现分页功能查询mysql数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.问题当数据库中数据比较多时,就要每次只查询一部分来缓解服务器和页面的压力。这
2023-06-22

Requests库实现数据抓取与处理功能

本文介绍了Python中常用的第三方库Requests的基本用法和高级功能,我们学习了如何发起HTTP请求、处理响应、使用会话对象、设置代理和证书验证等技巧,需要的朋友可以参考下
2023-05-20

java怎么实现分页功能

这篇文章主要介绍“java怎么实现分页功能”,在日常操作中,相信很多人在java怎么实现分页功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java怎么实现分页功能”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-03

编程热搜

目录