JS实现表格搜索内容

页面有表格的时候我们都会含有搜索功能,例如:

html和CSS略(源码滑倒底部),直接上JS:

function myFunction() { //如果有搜索按钮,定义一个onclick即可
  // 声明变量
  var input, filter, table, tr, td, i;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase(); //toUpperCase()是不区分大小写
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");
 
  // 循环表格每一行,查找匹配项
  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0]; //这个0时要搜索第1列的内容,以此类推
    if (td) {
      if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {  //如果要区分大小写就去掉这个toUpperCase()
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    } 
  }
}

这里只能搜索第1列名称的内容,想搜索城市搜不出来的,如果你想搜索第1列和第2列中任意内容,修改下面这行内容即可:

td = tr[i].getElementsByTagName("td")[0];//想搜索哪列内容就都放进去
td1 = tr[i].getElementsByTagName("td")[1];

这就可以搜索第1和第2列的内容了,即可搜索第一列的名称和第2列的城市,赶紧试试效果吧!

整体修改代码(看看跟上面的有啥区别):

function myFunction() { //如果有搜索按钮,定义一个onclick即可
  // 声明变量
  var input, filter, table, tr, td,td1, i;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase(); //toUpperCase()是不区分大小写
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");
 
  // 循环表格每一行,查找匹配项
  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0]; //这个0时要搜索第1列的内容,以此类推
    td1 = tr[i].getElementsByTagName("td")[1];    

    if (td || td1) {
      if (td.innerHTML.toUpperCase().indexOf(filter) > -1 || td1.innerHTML.toUpperCase().indexOf(filter) > -1) {  //如果要区分大小写就去掉这个toUpperCase()
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    } 
  }
}

锦上添花功能:

如果你想加上输入完搜索内容后,按 回车键 触发搜索,代码如下(直接复制可用):

 document.onkeydown = function (e) {
       if (!e) e = window.event;
       if ((e.keyCode || e.which) == 13) {
          var obtnLogin = document.getElementById("HuiCheSousuo");   //HuiCheSousuo为按钮ID
          obtnLogin.focus();
          fun();//提交按钮触发的方法
       }
   }

源码路径:JavaScript 表格数据搜索 | 菜鸟教程

还有一个推荐:https://www.jb51.net/article/139940.htm

代码都很类似,万变不离其中。

function onku(obj){//js函数开始
        setTimeout(function(){//因为是即时查询,需要用setTimeout进行延迟,让值写入到input内,再读取
          var storeId = document.getElementById('store');//获取table的id标识
          var rowsLength = storeId.rows.length;//表格总共有多少行
          var key = obj.value;//获取输入框的值
          var searchCol = 0;//要搜索的哪一列,这里是第一列,从0开始数起,如果是多列呢?用数组?自己测试看看;


          for(var i=1;i<rowsLength;i++){//按表的行数进行循环,本例第一行是标题,所以i=1,从第二行开始筛选(从0数起)
            var searchText = storeId.rows[i].cells[searchCol].innerHTML;//取得table行,列的值
            if(searchText.match(key)){//用match函数进行筛选,如果input的值,即变量 key的值为空,返回的是ture,
              storeId.rows[i].style.display='';//显示行操作,
            }else{
              storeId.rows[i].style.display='none';//隐藏行操作
            }
          }
        },200);//200为延时时间
      }
  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
以下是一个简单的实现,使用了原生 JavaScript 和 HTML: ```html <!DOCTYPE html> <html> <head> <title>Search Table</title> </head> <body> <input type="text" id="searchInput" placeholder="Search..."> <table id="dataTable"> <thead> <tr> <th>Name</th> <th>Age</th> <th>Gender</th> </tr> </thead> <tbody> <tr> <td>John Doe</td> <td>25</td> <td>Male</td> </tr> <tr> <td>Jane Smith</td> <td>30</td> <td>Female</td> </tr> <tr> <td>Bob Johnson</td> <td>40</td> <td>Male</td> </tr> </tbody> </table> <script> // 获取表格搜索框元素 var dataTable = document.getElementById("dataTable"); var searchInput = document.getElementById("searchInput"); // 添加事件监听器,当搜索框输入内容时触发 searchInput.addEventListener("input", function() { var searchText = searchInput.value.toLowerCase(); // 获取搜索框输入的文本并转换成小写 var rows = dataTable.getElementsByTagName("tr"); // 获取表格中的所有行 // 遍历表格中的每一行 for (var i = 0; i < rows.length; i++) { var name = rows[i].getElementsByTagName("td")[0].textContent.toLowerCase(); // 获取当前行的第一列文本并转换成小写 var age = rows[i].getElementsByTagName("td")[1].textContent.toLowerCase(); // 获取当前行的第二列文本并转换成小写 var gender = rows[i].getElementsByTagName("td")[2].textContent.toLowerCase(); // 获取当前行的第三列文本并转换成小写 // 如果当前行的任意一列中包含搜索文本,则显示当前行,否则隐藏当前行 if (name.includes(searchText) || age.includes(searchText) || gender.includes(searchText)) { rows[i].style.display = ""; } else { rows[i].style.display = "none"; } } }); </script> </body> </html> ``` 该代码会创建一个包含搜索框和表格的 HTML 页面,并使用 JavaScript 实现表格搜索功能。当用户输入搜索文本时,JavaScript 会遍历表格中的每一行,检查每一行的每一列是否包含搜索文本,并根据搜索结果显示或隐藏表格行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试狂人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值