js实现模糊搜索

简介: js实现模糊搜索
<style>
      input {
        width: 30%;
        margin-left: 35%;
        margin-top: 50px;
      }
      .title {
        margin-left: 15%;
        margin-top: 20px;
        width: 70%;
        display: flex;
      }
      .name {
        margin-top: 15px;
        width: 33%;
        text-align: center;
      }
      .contents {
        width: 70%;
        margin-left: 15%;
        margin-top: 10px;
      }
      .content {
        width: 100%;
        display: flex;
      }
    </style>

以上是css代码

<input type="text" class="input" oninput="search()" />
    <div class="title">
      <div class="name">姓名</div>
      <div class="name">身份</div>
      <div class="name" onclick="boss()">战力</div>
    </div>
    <div class="contents">
      <div class="content">
        
      </div>

以上是HTML代码

<script>
      let data; // 声明变量用于存储从服务器获取的 JSON 数据
      let input = document.getElementsByClassName('input')[0];
      let xhr = new XMLHttpRequest(); // 创建 XMLHttpRequest 对象
      xhr.open('get', 'js/new_file.json', true); // 使用 GET 方法请求指定路径的
      xhr.send(); // 发送请求
      xhr.onreadystatechange = function() {
        // 绑定 onreadystatechange 事件处理函数,处理响应状态变化
        if (xhr.readyState == 4 && xhr.status == 200) {
          let text = xhr.responseText;
          // 获取响应文本
          data = JSON.parse(text);
          // 将响应文本解析为 JSON 对象
          for (let i = 0; i < data.length; i++)
            // 遍历数据数组,根据身份属性进行转换
            if (data[i].identity == 1) {
              data[i].identity = '三教修士';
            } else if (data[i].identity == 2) {
            data[i].identity = '武夫';
          } else if (data[i].identity == 3) {
            data[i].identity = '剑修';
          };
          //给数据付给相应的身份值
          renderer(data); // 调用渲染函数,传入处理后的数据
        };
      };
      let contents = document.getElementsByClassName('contents')[0];
      function renderer(data) {
        let str = '';
        
        for (let i = 0; i < data.length; i++) {
          str +=
            `<div class="content"><div class="name">${data[i].name}</div><div class="name">${data[i].identity}</div><div class="name">${data[i].popularity}</div></div>`
        }
        contents.innerHTML = str;
      }
      let i = false;
      function boss() {
        //点击函数
        if (i == false) {
          // 如果 i 为 false,按受欢迎度从小到大排序
          data.sort(function(a, b) {
            return a.popularity - b.popularity;
          })
        } else if (i == true) {
          // 如果 i 为 true,按受欢迎度从大到小排序
          data.sort(function(a, b) {
            return b.popularity - a.popularity;
          })
        };
        i = !i;
        //给变量重新赋值
        renderer(data);
        //调用渲染函数
      };
      
      function search() {
        let value = input.value;
        //声明变量把input的值付给这个变量
        let arr = [];
        //声明变量把input的值付给这个变量
        for (let i = 0; i < data.length; i++) {
          //遍历data
          if (data[i].name.indexOf(value) >= 0) {
          //当data中的name中包含input的值时,把这个数据放到新建的数组中
            arr.push(data[i]);
          }
          renderer(arr);
          //调用渲染函数把新数组传参过去
        }
      }
    </script>

以上是js代码

目录
相关文章
|
6月前
|
JavaScript 前端开发
js中模糊搜索 模糊匹配如何实现?
js中模糊搜索 模糊匹配如何实现?
|
5月前
|
JavaScript 前端开发
JS如何配合input框实现模糊搜索
JS如何配合input框实现模糊搜索
171 2
|
3月前
|
JavaScript
js之模糊搜索
js之模糊搜索
|
3月前
|
JavaScript
js之模糊搜索
js之模糊搜索
|
3月前
|
JavaScript
js实现模糊搜索和排序
js实现模糊搜索和排序
18 0
|
3月前
|
JSON JavaScript 前端开发
使用js实现input框的模糊搜索
使用js实现input框的模糊搜索
31 0
|
5月前
|
JavaScript 前端开发
JS实现select框实现模糊搜索
JS实现select框实现模糊搜索
|
6月前
|
JavaScript
|
6月前
|
JavaScript
|
6月前
|
JavaScript
原生js做模糊搜索
原生js做模糊搜索
30 0