js分页+搜索

简介: js分页+搜索

好多兄弟和我说,我写的只有分页不能搜索,今天给大家上个好家伙,和昨天不能搜索的版本合并了,老性子,直接上干货

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="./js/jquery-3.7.1.js"></script>
    <style>
      .data_content {
        width: 60%;
        margin-left: 20%;
        display: flex;
        flex-direction: column;
        align-items: center;
        background-color: antiquewhite;
      }
 
      .content_box {
        margin: 10px 0;
        padding: 10px;
        border: 1px solid #ccc;
        width: 80%;
        display: flex;
        justify-content: space-around;
      }
 
      .but_page {
        display: flex;
        justify-content: center;
        margin-top: 20px;
      }
 
      .but_page button {
        padding: 8px 16px;
        margin: 0 5px;
        background-color: #007bff;
        color: #fff;
        border: none;
        cursor: pointer;
      }
 
      .but_page button:hover {
        background-color: royalblue;
      }
 
      .twig {
        line-height: 35px;
        margin-left: 10px;
      }
 
      .page_datas {
        margin-left: 500px;
        margin-top: 15px;
      }
 
      .seek_box {
        text-align: center;
        margin-bottom: 30px;
      }
 
      .centent_ts {
        width: 100%;
        height: 50px;
        font-size: 12px;
        color: red;
        text-align: center;
        position: absolute;
        top: 35px;
      }
    </style>
  </head>
  <body>
    <!-- 搜索框 -->
    <div class="seek_box">
      <input type="text" class="input_value" />
      <button onclick="scr()">搜索</button>
    </div>
    <!-- 存放数据 -->
    <div class="data_content"></div>
    <!-- 底部页码 -->
    <div class="but_page"></div>
    <!-- 页码跳转和每页数据 -->
    <div class="page_datas">
      <input type="number" class="href_but" />
      <button onclick="href_page()">跳转</button>
      <select name="" class="per_page">
        <option value="10">每页10条数据</option>
        <option value="5">每页5条数据</option>
        <option value="15">每页15条数据</option>
      </select>
    </div>
    <div class="centent_ts">
    </div>
    <script>
      //全局变量
      let data;
      let num = 10; //每页数据
      let k = 0; //第几页
      let k_all; //一共多少页
      // 请求假数据
      $.ajax({
        type: "GET",
        url: "js/new_file.json",
        success: function(res) {
          data = res;
          console.log(data);
          applyColours(data);
        },
      });
 
      // 渲染函数
      function applyColours(data) {
        k_all = Math.ceil(data.length / num); //获取到总共多少页
        //渲染内容
        let str = '';
        for (let i = k * num; i < (k + 1) * num; i++) {
          if (data[i] == undefined) {
            break;
          }
          str += `
          <div class="content_box">
            <div>${data[i].id}</div>
            <div>${data[i].name}</div>
            <div>${data[i].gender}</div>
            <div>${data[i].content}</div>
            <div>${data[i].age}</div>
          </div>`;
        }
        $('.data_content').html(str);
        //渲染按钮
        let std = ``;
        std += `<button onclick="but_top()">上一页</button>`
        for (let i = 0; i < k_all; i++) {
          std += `<button onclick="buts(${i})">${i+1}</button>`
        }
        std += `<button onclick="but_bottom()">下一页</button>`
        std += `<div class="twig">共${data.length}条</div>`
        std += `<div class="twig">共${k_all}页</div>`
        std += `<div class="twig">当前第${k+1}页</div>`
        $('.but_page').html(std);
        $(".but_page button").eq(k + 1).css("background-color", "aquamarine")
      }
      // 点击上一页事件
      function but_top() {
        if (k > 0) {
          k--;
        } else {
          $('.centent_ts').html("当前已经是第一页")
          setTimeout(function() {
            $('.centent_ts').html("")
          }, 2000);
        }
        console.log(k);
        applyColours(data);
      }
      // 点击下一页事件
      function but_bottom() {
        if (k < k_all - 1) {
          k++;
        } else {
          $('.centent_ts').html("当前已经是最后一页")
          setTimeout(function() {
            $('.centent_ts').html("")
          }, 2000);
        }
        applyColours(data);
      };
      // 点击按钮跳转
      function buts(da) {
        k = da;
        applyColours(data);
      }
      // 输入页码跳转事件
      function href_page() {
        // 获取输入框里面的值
        k = $('.href_but').val() - 1;
        // 判断是否执行渲染函数的条件
        if (k >= 0 && k <= k_all - 1 && k % 1 === 0) {
          applyColours(data);
        } else {
          //提示用户的内容
          $('.centent_ts').html("请不要输入小数,负数")
          //设置定时器,使提示用户的消息两秒后消失
          setTimeout(function() {
            $('.centent_ts').html("")
          }, 2000);
        }
      }
      // 每页数据
      $('.per_page').on('change', function() {
        // 使用户保持所在内容页
 
        // 获取每页多少条数据
        num = $('.per_page').val();
        new_page = Math.ceil(data.length / num);
        if (k <= new_page) {
          applyColours(data);
        } else {
          k = new_page - 1;
          applyColours(data);
        }
        console.log(new_page);
      });
      // 点击搜索
      function scr() {
        // 获取用户输入的值进行搜索
        let input_value = $('.input_value').val();
        // 定义一个空数组进行放入数据
        let arr = [];
        for (let i = 0; i < data.length; i++) {
          //如果有相同的字样就把他放入数组中
          if (data[i].name.indexOf(input_value) >= 0) {
            arr.push(data[i]);
          }
        }
        applyColours(arr);
      }
      console.log(k);
    </script>
  </body>
</html>

我是小辉,请大家多多关照

目录
相关文章
|
6月前
|
JavaScript
JS实现多条件搜索函数
JS封装的多条件搜索
|
JavaScript 前端开发
JavaScript分页功能
JavaScript分页功能
|
7月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发
JS如何配合input框实现模糊搜索
JS如何配合input框实现模糊搜索
356 2
|
12月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
317 1
|
JavaScript 数据安全/隐私保护 Python
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
1217 4
|
数据采集 算法 JavaScript
揭开JavaScript字符串搜索的秘密:indexOf、includes与KMP算法
JavaScript字符串搜索涵盖`indexOf`、`includes`及KMP算法。`indexOf`返回子字符串位置,`includes`检查是否包含子字符串。KMP是高效的搜索算法,尤其适合长模式匹配。示例展示了如何在数据采集(如网页爬虫)中使用这些方法,结合代理IP进行安全搜索。代码示例中,搜索百度新闻结果并检测是否含有特定字符串。学习这些技术能提升编程效率和性能。
337 1
揭开JavaScript字符串搜索的秘密:indexOf、includes与KMP算法
|
JavaScript 前端开发 安全
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
559 0
|
JavaScript
js好用的动态分页插件
js好用的动态分页插件是一款简单的分页样式插件,支持样式类型,当前页,每页显示数量,按钮数量,总条数,上一页文字,下一页文字,输入框跳转等功能。
93 1
|
前端开发 JavaScript 开发者
fuse.js前端搜索简单使用的三个案例
通过这三个例子可以看出,Fuse.js 是一个功能丰富、易于实现的前端搜索库。它使开发者能够便捷地实现从基础到高级的搜索功能,无论是简单的列表搜索还是实时的搜索建议,都能够高效、精确地提供给用户所需的信息。
566 0