JS分页的实现(同步与异步)

JS分页的实现有同步和异步两种方式。在介绍这两种方式之前,需要了解下分页所需的一些数据和参数:

  1. 当前页码 currentPage
  2. 每页展示数据条数 pageSize
  3. 总数据量 totalDataCount
  4. 总页数 pageCount

其中,总页数pageCount可根据总数据量totalDataCount和每页展示条数pageSize相除得到。接下来我们分别介绍同步和异步两种方式的实现。

同步方式

同步方式指的是在页面加载时,将所有数据一次性加载出来,利用JS进行数据的筛选展示、分页切换等操作。对于数据量较小的项目来说,同步方式实现起来比较简单,例如:

 // 定义数据数组
 var data = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20"];

 // 配置分页参数
 var currentPage = 1;
 var pageSize = 5;
 var totalDataCount = data.length;
 var pageCount = Math.ceil(totalDataCount / pageSize);

 // 定义分页显示函数
 function showData(currentPage) {
   // 清空容器内容
   document.getElementById("container").innerHTML = "";
   // 根据当前页码和每页展示数据条数,筛选出要显示的数据
   var dataStartIndex = (currentPage - 1) * pageSize;
   var dataEndIndex = dataStartIndex + pageSize > totalDataCount ? totalDataCount : dataStartIndex + pageSize;
   var showDataList = data.slice(dataStartIndex, dataEndIndex);
   // 将数据展示在页面上
   showDataList.forEach(function(item) {
     var div = document.createElement("div");
     div.innerHTML = item;
     document.getElementById("container").appendChild(div);
   })

   // 根据总数据量和当前页码生成分页栏
   var pageNav = "";
   for (var i = 1; i <= pageCount; i++) {
     if (i === currentPage) {
       pageNav += "<span class='current-page'>" + i + "</span>";
     } else {
       pageNav += "<a href='javascript:void(0)' onclick='showData(" + i + ")'>" + i + "</a>";
     }
   }
   document.getElementById("page-nav").innerHTML = pageNav;
 }

 // 页面加载时,显示第一页的数据
 showData(currentPage);

在以上示例中,我们实现了一个简单的同步分页效果。通过计算展示数据的起始位置和总页数,使用for循环生成了一个分页栏,点击分页栏,则根据不同页码重新筛选展示的数据。

异步方式

异步方式指的是在页面加载完成后,仅仅加载第一页的数据,然后根据用户的点击动作进行AJAX请求获取分页所需的数据,再进行数据展示。以下是一个异步分页的示例:

 // 配置分页参数
 var currentPage = 1;
 var pageSize = 5;
 var totalDataCount = 0;
 var pageCount = 0;

 // 定义分页显示函数
 function showData(currentPage) {
   var xhr = new XMLHttpRequest();
   xhr.open("GET", "/api/data?page=" + currentPage + "&pageSize=" + pageSize, true);
   xhr.onreadystatechange = function() {
     if (xhr.readyState === 4) {
       if (xhr.status === 200) {
         var data = JSON.parse(xhr.responseText);
         totalDataCount = data.totalDataCount;
         pageCount = Math.ceil(totalDataCount / pageSize);
         // 清空容器内容
         document.getElementById("container").innerHTML = "";
         // 将数据展示在页面上
         data.dataList.forEach(function(item) {
           var div = document.createElement("div");
           div.innerHTML = item;
           document.getElementById("container").appendChild(div);
         })

         // 根据总数据量和当前页码生成分页栏
         var pageNav = "";
         for (var i = 1; i <= pageCount; i++) {
           if (i === currentPage) {
             pageNav += "<span class='current-page'>" + i + "</span>";
           } else {
             pageNav += "<a href='javascript:void(0)' onclick='showData(" + i + ")'>" + i + "</a>";
           }
         }
         document.getElementById("page-nav").innerHTML = pageNav;
       } else {
         alert("数据加载失败!");
       }
     }
   };
   xhr.send(null);
 }

 // 页面加载时,显示第一页的数据
 showData(currentPage);

在以上示例中,实现了动态加载数据的功能,当用户点击不同的分页时,会进行异步请求获取对应的数据,并进行展示。可以看到,在展示和分页栏的生成过程中,我们都参考了同步分页的实现方式,只不过数据加载的方式不同。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS分页的实现(同步与异步) - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • JAVA学习之一步步搭建spring框架

    JAVA学习之一步步搭建Spring框架 Spring是一个开源的Java框架,它提供了一种轻量级的解决方案,用于构建企业级应用程序。本文将详细讲解如何一步步搭建Spring框架。 1. 安装Java和Maven 在开始搭建Spring框架之前,我们需要先安装Java和Maven。Java是一种广泛使用的编程语言,而Maven是一个Java项目管理工具,它可…

    Java 2023年5月18日
    00
  • Java8新特性:Lambda表达式之方法引用详解

    Java8新特性:Lambda表达式之方法引用详解 Java 8中引入了Lambda表达式,使得Java中的函数式编程变得更加简单。方法引用是Lambda表达式的一种特殊形式,让我们能够重复利用已有方法的实现。 方法引用的概念 方法引用是一个简写形式,它提供了一种方式,让我们可以使用已有方法的规则来编写Lambda表达式。简单来说,方法引用允许你直接引用现有…

    Java 2023年5月26日
    00
  • Java检查日期字符串是否合法的方法总结

    下面是详细的讲解。 一、问题描述 在Java中,经常需要对日期字符串进行处理。然而,在处理日期字符串时,会遇到日期格式不正确的情况。因此,如何检查一个日期字符串是否符合某种固定格式是非常重要的。 二、实现思路 检查一个日期字符串是否合法的主要思路是对日期格式进行校验。Java中提供了许多日期格式的校验方式,比较常用的有以下几种: 使用SimpleDateFo…

    Java 2023年5月20日
    00
  • Spring Boot 启动、停止、重启、状态脚本

    Spring Boot启动、停止、重启、状态脚本的完整攻略 Spring Boot是一个非常流行的Java Web框架,它提供了许多方便的功能,如自配置、快速开发和易于部署。在本文中,我们将介绍如何编写Spring Boot的启动、停止、重启和状态脚本,并提供两个示例。 示例一:使用systemd编写脚本 systemd是一个Linux系统的初始化系统和服务…

    Java 2023年5月15日
    00
  • Kafka之kafka-topics.sh的使用解读

    介绍 kafka-topics.sh 是 Kafka 提供的命令行工具,常用于管理 Kafka 的主题。可以使用此工具创建、删除、查看主题信息,以及修改主题的配置等操作。 使用 首先需要进入kafka的bin目录,输入以下命令即可查询所有的命令: ./kafka-topics.sh 查询所有命令接口: ./kafka-topics.sh {-zookeepe…

    Java 2023年5月20日
    00
  • jQuery+jsp实现省市县三级联动效果(附源码)

    实现省市县三级联动效果是Web开发中经常需要的功能之一。在这个过程中,jQuery 和 jsp 无疑是非常好的组合,因为 jQuery 可以方便的获取和操作DOM元素,jsp则具有动态生成html页面的优势。本文将分享一篇详细的攻略,教你如何使用 jQuery 和 jsp 实现省市县三级联动效果,并附上完整的源码。 一、前置知识 在阅读本篇攻略前,你需要具备…

    Java 2023年6月15日
    00
  • 使用Java获取Json中的数据简单示例

    下面是使用Java获取Json中的数据简单示例的完整攻略: 什么是Json? Json(全称JavaScript Object Notation)是一种轻量级的数据交换格式。Json格式数据可以使用在不同的编程语言中进行数据传递,包括Java。 Json数据可以被编码为一个字符串,并在各种网络上传输或存储。在Java中可以使用Json库来解析和生成Json数…

    Java 2023年5月28日
    00
  • 微信小程序向Java后台传输参数的方法实现

    如何实现微信小程序与Java后台之间的参数传递是一个较为重要且常见的问题。下面是一份完整的攻略,它包含了从前端到后端的全部知识点和示例。 前端实现 在微信小程序中传递参数的方法,与普通Web开发的方法类似。我们这里着重讲述以下两种方法: 参数以GET方式拼接在URL后传递 这是一种最常用的传参方法,它比较直观,易于理解和操作。GET方式传参的地址是一个完整的…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部