博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js实现table内 某列的内容进行即时筛选
阅读量:5948 次
发布时间:2019-06-19

本文共 1765 字,大约阅读时间需要 5 分钟。

往往有些时候,我们把数据从读取出来,显示到table里面,而此时来了个新需求,要在一个搜索框内输入关键字,表格的内容进行即时的筛选。

而即时触发进行数据库的查询,再回调显示,就显得慢,拖累服务器,降低用户体验度,这时,要是有个纯js操作,进行表格某列的即时筛选,这样既能提高搜索速度,也不用占用服务器资源,用户自然也满意。

实现如下,先看效果图,

开始状态:

 

在输入框内输入‘w’,表格即时进行筛选,筛选表格内包含有‘w’的行,没有‘w’的进行隐藏,原理就是这样:

 

实现代码:

 

[html]   
 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>Test js</title>  
  6. </head>  
  7. <script type="text/javascript">  
  8. function onSearch(obj){//js函数开始  
  9.     setTimeout(function(){//因为是即时查询,需要用setTimeout进行延迟,让值写入到input内,再读取  
  10.         var storeId = document.getElementById('store');//获取table的id标识  
  11.         var rowsLength = storeId.rows.length;//表格总共有多少行  
  12.         var key = obj.value;//获取输入框的值  
  13.   
  14.         var searchCol = 0;//要搜索的哪一列,这里是第一列,从0开始数起  
  15.   
  16.         for(var i=1;i<rowsLength;i++){//按表的行数进行循环,本例第一行是标题,所以i=1,从第二行开始筛选(从0数起)  
  17.             var searchText = storeId.rows[i].cells[searchCol].innerHTML;//取得table行,列的值  
  18.   
  19.             if(searchText.match(key)){//用match函数进行筛选,如果input的值,即变量 key的值为空,返回的是ture,  
  20.                 storeId.rows[i].style.display='';//显示行操作,  
  21.             }else{  
  22.                 storeId.rows[i].style.display='none';//隐藏行操作  
  23.             }  
  24.         }  
  25.     },200);//200为延时时间  
  26. }  
  27. </script>  
  28. <body>  
  29. <div <input name="key" type="text" id="key" οnkeydοwn="onSearch(this)" value="" /></div>  
  30. <table width="200" border="1" id="store"><!-- id与函数的getId一致 -->  
  31.   <tr bgcolor="#CCCCCC">  
  32.     <td>name</td>  
  33.     <td</td>  
  34.     <td</td>  
  35.   </tr>  
  36.     <td>good</td>  
  37.     <td</td>  
  38.     <td</td>  
  39.   </tr>  
  40.   <tr>  
  41.     <td>better</td>  
  42.     <td</td>  
  43.     <td</td>  
  44.   </tr>  
  45.   <tr>  
  46.     <td>best</td>  
  47.     <td</td>  
  48.     <td</td>  
  49.   </tr>  
  50.   <tr>  
  51.     <td>bad</td>  
  52.     <td</td>  
  53.     <td</td>  
  54.   </tr>  
  55.   <tr>  
  56.     <td>worse</td>  
  57.     <td</td>  
  58.     <td</td>  
  59.   </tr>  
  60.   <tr>  
  61.     <td>worst</td>  
  62.     <td</td>  
  63.     <td</td>  
  64.   </tr>  
  65.     
  66. </table>  
  67.   
  68.   
  69. </body>  
  70. </html>  

转载于:https://www.cnblogs.com/AmilyWilly/p/6485336.html

你可能感兴趣的文章
Android Fragment实践(二)
查看>>
centos 修改主机名立即生效和重启后也生效的方法
查看>>
Windows 64 位 mysql 5.7以上版本包解压安装
查看>>
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>
TClientDataSet[14]: 测试 FindFirst、FindNext、FindLast、FindPrior、Found
查看>>
CentOS 6.3中配置bond多网卡负载均衡
查看>>
clamav 完整查杀 linux 病毒实战
查看>>
我的友情链接
查看>>
EIGRP的Metric计算以及负载均衡
查看>>
org-capture 配置
查看>>
linux下lvs搭建负载均衡集群
查看>>
JMS 实例讲解
查看>>
求教:如何成为一个优秀的项目经理人
查看>>
shell 脚本--备份、还原mysql数据库
查看>>
JS脚本静态变量调用方法
查看>>
linux中cacti和nagios整合
查看>>
Parallels Desktop12推出 新增Parallels Toolbox
查看>>
正则表达式验证身份证格式是否正确
查看>>
Firebird(全功能的,免维护的数据库,能够管理多个独立的数据库) V2.1.3 英文特别版...
查看>>
xml格式文件解析
查看>>