zoukankan      html  css  js  c++  java
  • js实现table内 某列的内容进行即时筛选

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

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

    实现如下,先看效果图,

    开始状态:

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

    实现代码:

    [html] view plain copy
     
    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" onkeydown="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>  
  • 相关阅读:
    [转贴]35岁之前成功12条法则
    any type,any name
    The quick brown fox jumps over the lazy dog.
    [总结]软件工程师笔试题目(C++)
    [转]IOCP介绍
    A simple IOCP Server/Client Class
    Flash for Linux
    看看你是否需要更新SYMBOL文件了??
    [转贴]The Code Project Visual C++ Forum FAQ
    (搜集)一些少走弯路的话语+参考信息
  • 原文地址:https://www.cnblogs.com/AmilyWilly/p/6485336.html
Copyright © 2011-2022 走看看