使用js实现input框的模糊搜索

简介: 使用js实现input框的模糊搜索

使用简单的js代码就可以实现模糊搜索功能,使用indexOf属性。

json假数据:使用数组包对象的方法,在json中设置了三列数据,分别是:名称,性别和交易额。

[{
  "name": "虚拟星辰",
  "deal": 420,
  "sex": 1
}, {
  "name": "神秘星河",
  "deal": 301,
  "sex": 2
}, {
  "name": "灵光闪现",
  "deal": 290,
  "sex": 1
}, {
  "name": "微笑的月亮",
  "deal": 468,
  "sex": 2
}, {
  "name": "萌猫棉花糖",
  "deal": 105,
  "sex": 2
}, {
  "name": "未知的旅行家",
  "deal": 900,
  "sex": 1
}, {
  "name": "千变万化",
  "deal": 813,
  "sex": 1
}, {
  "name": "梦幻仙境",
  "deal": 742,
  "sex": 2
}, {
  "name": "甜点糖果",
  "deal": 609,
  "sex": 2
}, {
  "name": "网络风行",
  "deal": 305,
  "sex": 1
}, {
  "name": "星星饼干",
  "deal": 1059,
  "sex": 2
}]

HTML及css样式代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <style>
      h2 {
        text-align: center;
      }
 
      input {
        width: 50%;
        margin-left: 25%;
      }
 
      .content {
        font-size: 16px;
        display: flex;
        justify-content: space-around;
        margin-top: 30px;
      }
 
      .monicker {
        margin-top: 10px;
      }
 
      .gender {
        margin-top: 10px;
        text-align: center;
      }
 
      .trades {
        margin-top: 10px;
        text-align: center;
      }
    </style>
  </head>
  <body>
    <h2>排行榜</h2>
    <input type="text" class="inp" onchange="but()" />
 
    <div class="content">
      <div class="names">姓名
        <div class="monicker">虚拟星辰</div>
      </div>
      <div class="sexs">性别<div class="gender">男</div>
      </div>
      <div class="trade">交易量
        <div class="trades">420</div>
      </div>
    </div>
    <script src="js/dim.js"></script>
  </body>
</html>

js代码:

// 声明一个全局变量data来存储从服务器获取的数据 
let data;
let xhr = new XMLHttpRequest();
xhr.open('get', 'js/dim.json', true);
xhr.send();
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    let text = xhr.responseText;
    console.log(text);
    data = JSON.parse(text);
    console.log(data);
    // 调用渲染函数
    list(data);
  }
};
 
// 封装函数
function list(data) {
  // 拼接姓名
  let str = '';
  // 拼接性别
  let stre = '';
  // 拼接交易量
  let strs = '';
  str += `<div class="names">姓名</div>`;
  stre += `<div class="sexs">性别</div>`;
  strs += `<div class="trade">交易量</div>`;
  // 遍历数组,拼接内容
  for (let i = 0; i < data.length; i++) {
    str += `<div class="monicker">${data[i].name}</div>`;
    // 使用三元表达式,条件1 判断sex的值是否为1,为1则是男生,否则是女生
    stre += `<div class="gender">${data[i].sex==1?`男`:`女`}</div>`;
    strs += `<div class="trades">${data[i].deal}</div>`
  };
  // 将拼接好的内容设置到对应的HTML元素中
  document.getElementsByClassName('names')[0].innerHTML = str;
  document.getElementsByClassName('sexs')[0].innerHTML = stre;
  document.getElementsByClassName('trade')[0].innerHTML = strs;
};
// 获取输入框
let inp = document.getElementsByClassName('inp')[0];
console.log(inp);
 
// 绑定onchange事件
function but() {
  console.log(data, inp.value);
  // 创建一个空数组用于存储过滤后的数据  
  var arr = [];
  // 遍历全局变量data中的数据
  for (var i = 0; i < data.length; i++) {
    // 检查数据中name属性是否包含输入框的值
    if (data[i].name.indexOf(inp.value) >= 0 || data[i].deal.toString().indexOf(inp.value) >= 0) {
      // 如果包含,则将数据添加到arr数组中
      arr.push(data[i]);
    };
  };
  // 打印结果
  console.log(arr);
  // 渲染页面
  list(arr);
};

上面的代码是通过假数据中的name和deal交易量来进行模糊搜索。


目录
相关文章
|
6月前
|
JavaScript 前端开发
js中模糊搜索 模糊匹配如何实现?
js中模糊搜索 模糊匹配如何实现?
|
5月前
|
JavaScript 前端开发
JS如何配合input框实现模糊搜索
JS如何配合input框实现模糊搜索
171 2
|
1月前
|
JavaScript 前端开发
js实现模糊搜索
js实现模糊搜索
28 1
|
3月前
|
JavaScript
js之模糊搜索
js之模糊搜索
|
3月前
|
JavaScript
js之模糊搜索
js之模糊搜索
|
3月前
|
JavaScript
js实现模糊搜索和排序
js实现模糊搜索和排序
19 0
|
5月前
|
JavaScript
【干货】JS 限制input文本框输入
【干货】JS 限制input文本框输入
|
5月前
|
JavaScript 前端开发
JS实现select框实现模糊搜索
JS实现select框实现模糊搜索
|
6月前
|
JavaScript
|
6月前
|
移动开发 JavaScript HTML5
input | pattern | oninvalid | setCustomValidity | html5原生js表单校验
input | pattern | oninvalid | setCustomValidity | html5原生js表单校验
71 0