相关知识

  • toLowerCase()实现查询不区分大小写
  • search()用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
var par="hello word";
console.log(par.search("he"));

如果找到匹配字符串,返回匹配字符串的索引,如果没有找到任何匹配的字符串,则返回-1。

  • split()拆分字符串为数组
var str="abc 123 ert";
var arr=str.split(" ");

代码实现

<!DOCTYPE html>
<html>

<head>
  <title>表格的模糊搜索</title>
  <style>
    table{
      border-top:1px solid #dcdee2;
      border-left: 1px solid #dcdee2;
      border-collapse: collapse;
      border-spacing: 0;
    }
    table td,table th{
      border-right: 1px solid #dcdee2;
      border-bottom: 1px solid #dcdee2;
      width: 400px;
      height: 30px;
      line-height: 30px;
      text-align: center;
    }
    table th{
      background: #f8f8f9;
    }
  </style>
  <script>
  // 一般搜索都是由后台完成的,我们在于思想本身
    window.onload=function(){
      var oTab=document.getElementById("tab1");
      var oTxt=document.getElementById("name");
      var oBtn=document.getElementById("btn1");
      oBtn.onclick=function(){
        for(var i=0; i<oTab.tBodies[0].rows.length; i++){
          var sTab=oTab.tBodies[0].rows[i].cells[1].innerHTML.toLowerCase();//toLowerCase()实现忽略大小写搜索
          var sTxt=oTxt.value.toLowerCase();
          var arr=sTxt.split(" ");//用空格或逗号拆输入的关键字,实现多字符搜索
          // oTab.tBodies[0].rows[i].style.background="";//高亮查询
          oTab.tBodies[0].rows[i].style.display="none"
          for(var j=0; j<arr.length; j++){
            if(sTab.search(arr[j])!=-1){//search实现模糊搜索
              // oTab.tBodies[0].rows[i].style.background="green";//高亮查询
              oTab.tBodies[0].rows[i].style.display="block";//非高亮展示,筛选展示
            }
          }

        }
      }

    }
  </script>
</head>

<body>
  <input type="text" id="name" />
  <input type="button" id="btn1" value="搜索">
  <table id="tab1">
    <thead>
      <tr>
        <th>ID</th>
        <th>姓名</th>
        <th>年龄</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>Amy</td>
        <td>20</td>
      </tr>
      <tr>
        <td>2</td>
        <td>李四</td>
        <td>30</td>
      </tr>
      <tr>
        <td>3</td>
        <td>王五</td>
        <td>26</td>
      </tr>
      <tr>
        <td>4</td>
        <td>王六</td>
        <td>26</td>
      </tr>
    </tbody>
    <tfoot>
      <tr>
        <td colspan="3">总计3条</td>
      </tr>
    </tfoot>
  </table>
</body>

</html>

总结

平时页面中用到的搜索都是后台提供,这里只整理下搜索的思路供参考。


666888
334 声望10 粉丝

知其然且知其所以然。