JavaScript分页功能

简介: JavaScript分页功能

HTML结构这一部分自己想怎么写怎么写

<body>
    <div class="billboard">
 
    </div>
 
 
    <div class="table_box">
      <table class="serial">
        
        <thead>
          <tr>
            <td>Serial Number</td>
            <td>name</td>
            <td>age</td>
            <td>motto</td>
          </tr>
        </thead>
 
        <tbody>
 
        </tbody>
      </table>
 
    </div>
    <div class="box">
 
    </div>
 
    <script src="./js/paging.js"></script>
  </body>

我这里JS用的外联,代码马上呈现给兄弟们!

let data; // 用于存储从服务器获取的数据
let num = 5; // 每页显示的条目数
let k = 0; // 当前页数,初始化为0
let page;
let i;
let totalPages;
let endPage;
 
let xhr = new XMLHttpRequest(); // 创建一个新的 XMLHttpRequest 对象
// 设置请求方式和请求地址发送 GET 请求,请求的地址为 './js/paging.json',true 表示异步请求
xhr.open('get', './js/paging.json', true);
// 发送请求
xhr.send();
// 接收返回的响应数据
xhr.onreadystatechange = function () {
  if (xhr.readyState == 4 && xhr.status == 200) {
    // 将从服务器返回的 JSON 数据解析为 JavaScript 对象,并赋值给 data 变量
    data = JSON.parse(xhr.responseText);
    // 调用展示数据的函数 show,并传入获取的数据作为参数
    show(data);
    console.log(data);
  }
 
};
 
 
 
// 修改 show(data) 函数和相关部分
function show(data) {
  totalPages = Math.ceil(data.length / num); // 总页数
 
 
  // 计算显示页码的范围
  // if (totalPages <= 4) {
  //  startPage = 0;
  //  endPage = totalPages - 1;
  // } else {
  //  if (k <= 2) { // 当前页码在前3页
  //    startPage = 0;
  //    endPage = 3;
  //  } else if (k >= totalPages - 3) { // 当前页码在后3页
  //    startPage = totalPages - 4;
  //    endPage = totalPages - 1;
  //  } else { // 当前页码在中间部分
  //    startPage = k - 1;
  //    endPage = k + 1;
  //  }
  // }
 
  // 生成数据表格
  let str = '';
  let sti = ``;
  for (let i = k * num; i < (k + 1) * num; i++) {
    if (data[i] == undefined) break;
    str +=
      `<tr>
                <td>${i + 1}</td>
                <td>${data[i].name}</td>
                <td>${data[i].age}</td>
                <td>${data[i].motto}</td>
            </tr>`;
  }
  // 生成分页控件
  sti = `
        <div>第${k + 1}页</div>  ||
        <div>共${data.length}条数据</div> 
        <select id="show" onchange="selects()">
            <option>${num}条/页</option>
            <option value="5">5条/页</option>
            <option value="10">10条/页</option>
            <option value="20">20条/页</option>
        </select>
        <div class="homepage" onclick="end_page()">首页</div>
        <div class="homepage" onclick="pages()">上一页</div>`;
 
  if (totalPages < 6) {
    for (k = 0; k < totalPages; k++) {
      sti += `<div class="borders" onclick="clickreat(${k})">${k + 1}</div>`;
    }
  } else {
    if (k < 3) {
      sti += `<div class="tail_page" onclick="next(${0})" ${k == 0 ? 'style="background-color:pink;"' : '""'}>${1}</div>
      <div class="tail_page" onclick="next(${1})" ${k == 1 ? 'style="background-color:pink;";' : '"'} >${2}</div>
      <div class="tail_page" onclick="next(${2})" ${k == 2 ? 'style="background-color:pink;";' : '"'}>${3}</div>
      <div class="tail_page" onclick="next(${3})" ${k == 3 ?
          'style="background-color:pink;";' : '"'}>${4}</div>
      <div class="tail_page" onclick="next(${4})" ${k == 4 ? 'style="background-color:pink;";' : '"'}>${5}</div>...`;
 
    } else if (k > totalPages - 4) {
      sti +=
        `...<div class="tail_page" onclick="next(${totalPages - 5})" ${k == totalPages - 5 ? 'style="background-color:pink;";' : '"'}>${totalPages - 4}</div>
      <div class="tail_page" onclick="next(${totalPages - 4})" ${k == totalPages - 4 ? 'style="background-color:pink;";' : '"'}>${totalPages - 3}</div>
      <div class="tail_page" onclick="next(${totalPages - 3})" ${k == totalPages - 3 ? 'style="background-color:pink;";' : '"'}>${totalPages - 2}</div>
      <div class="tail_page" onclick="next(${totalPages - 2})" ${k == totalPages - 2 ? 'style="background-color:pink;";' : '"'}>${totalPages - 1}</div>
      <div class="tail_page" onclick="next(${totalPages - 1})" ${k == totalPages - 1 ? 'style="background-color:pink;";' : '"'}>${totalPages}</div>`;
    } else {
      sti += `...<div class="tail_page" onclick="sort(${k - 2})" >${k - 1}</div>
        <div class="tail_page" onclick="next(${k - 1})">${k}</div>
        <div class="tail_page" onclick="next(${k})" style="background:pink">${k + 1}</div>
        <div class="tail_page" onclick="next(${k + 1})">${k + 2}</div>
        <div class="tail_page" onclick="next(${k + 2})">${k + 3}</div>...`;
    }
  }
 
 
  sti += `
        前往<input type="text" class="butoo">页
        <div class="tail_page" onclick="next()">下一页</div>
        <div class="tail_page" onclick="trailer()">尾页</div>
    `;
 
  // 更新页面内容
  document.getElementsByTagName('tbody')[0].innerHTML = str;
  document.getElementsByClassName('box')[0].innerHTML = sti;
}
 
 
// 点击页码按钮跳转函数
function clickreat(index) {
  k = index;
  show(data);
}
 
 
// 下一页函数
function next() {
  // 已经到最后一页 不执行任何操作
  if (k == totalPages - 1) {
    alert('已经到底啦');
  } else {
    k++;
    console.log(k);
    // 显示下一页数据
  }
  show(data);
}
 
 
// 上一页函数
function pages() {
  k--;
  if (k < 0) {
    k = 0; // 如果已经是第一页,则保持在第一页
    alert("已经是第一页啦");
  }
  console.log(k);
  // 显示上一页数据
  show(data);
}
 
 
// 调回首页
function end_page() {
  k = 0;
  show(data)
}
 
 
// 尾页
function trailer() {
 
  k = totalPages - 1;
  show(data)
  // console.log(totalPages);
}
 
 
// 键盘事件,按下回车跳转指定页
document.addEventListener("keydown", function (e) {
  if (e.key === "Enter") {
    // 获取输入框的值并去除首尾空格
    let value = document.getElementsByClassName('butoo')[0].value.trim();
    // 检查输入的值是否为有效的整数
    if (Number.isInteger(Number(value)) && parseInt(value) > 0 && parseInt(value) <= totalPages) {
      k = parseInt(value) - 1; // 设置跳转页数 从0开始
      show(data); // 显示指定页数据
    } else {
      alert("请输入有效的页码数!"); // 提示输入无效页码
      // 清空输入框内容或者恢复到之前的有效选项
    }
    // document.getElementsByClassName('butoo')[0].value = '';
  }
});
 
 
// select下拉框事件,改变每页显示条目数
function selects() {
  k = 0;
  let value = document.getElementById('show').value;
  //  更新每页显示条目数
  num = value;
  // 重新计算总页数
  totalPages = Math.ceil(data.length / num);
  show(data);
}

显示多条数据那里20条有点小小的毛病哪位大神给找一下发我呢感谢

相关文章
|
23天前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
24 2
|
2月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
2月前
|
JavaScript 前端开发 API
|
2月前
|
JavaScript API UED
vue.js怎么实现全屏显示功能
【10月更文挑战第7天】
25 1
|
2月前
|
资源调度 JavaScript UED
如何使用Vue.js实现单页应用的路由功能
【10月更文挑战第1天】如何使用Vue.js实现单页应用的路由功能
|
2月前
|
JavaScript 搜索推荐
JS中的模糊查询功能
JS中的模糊查询功能
32 1
|
2月前
|
前端开发 JavaScript
使用 JavaScript 实现图片预览功能
使用 JavaScript 实现图片预览功能
34 0
|
2月前
|
JavaScript 安全 前端开发
js实现复制功能
js实现复制功能
19 0
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
97 2