JS搜素表格

用JS实现在表格内搜素名字。

基本版:完全匹配

思路:在表格里搜素每一行,把用户输入的值和所有名字做出对比,完全匹配后高亮显示。

1、获取元素。

2、for循环历遍表格,把用户输入的值和所有名字对比,如果相等就高亮显示该行。oTable.tBodies[0].rows[i].cells[0].innerHTML==oTxt.value

JS代码:

 1 <script>
 2 window.onload=function()
 3 {
 4     var oTxt=document.getElementById('txt');
 5     var oSearch=document.getElementById('search');
 6     var oTable=document.getElementById('table');
 7     
 8     oSearch.onclick=function()
 9     {
10         for(var i=0;i<oTable.tBodies[0].rows.length;i++)
11         {
12             if(oTable.tBodies[0].rows[i].cells[0].innerHTML==oTxt.value)
13             {
14                 oTable.tBodies[0].rows[i].style.background='yellow';
15             }
16             else
17             {
18                 oTable.tBodies[0].rows[i].style.background='';
19             }
20         };
21     };    
22 };
23 </script>

 

 

加强版:忽略大小写

思路:在表格里搜素每一行,把用户输入的值和所有名字做出对比,完全匹配后高亮显示。

1、获取元素。

2、for循环历遍表格,把用户输入的值和所有名字对比,把用户输入的值和表格的值都强制转换为小写或者大写,只要转换为两种类型一样就能实现忽略大小写,如果相等就高亮显示该行。oTable.tBodies[0].rows[i].cells[0].innerHTML.toLowerCase==oTxt.value.toLowerCase

转换为小写:toLowerCase()   转换为大写:toUpperCase()

JS代码:

 1 window.onload=function()
 2 {
 3     var oTxt=document.getElementById('txt');
 4     var oSearch=document.getElementById('search');
 5     var oTable=document.getElementById('table');
 6     
 7     oSearch.onclick=function()
 8     {
 9         for(var i=0;i<oTable.tBodies[0].rows.length;i++)
10         {
11             sTab=oTable.tBodies[0].rows[i].cells[0].innerHTML;
12             sTxt=oTxt.value;
13             if(sTab.toUpperCase()==sTxt.toUpperCase())
14             {
15                 oTable.tBodies[0].rows[i].style.background='yellow';
16             }
17             else
18             {
19                 oTable.tBodies[0].rows[i].style.background='';
20             }
21         };
22     };
23     
24 };
25 </script>

 

 

加强版:模糊搜索

search用于查找并返回字符串的位置,如果没有找到该字符串就等于-1,现在只要判断表格里面名字和用户输入的值不等于-1,就说明用户输入的值和表格的名字的某部分是匹配的。这样就能实现模糊搜索。

JS代码:

<script>
window.onload=function()
{
    var oTxt=document.getElementById('txt');
    var oSearch=document.getElementById('search');
    var oTable=document.getElementById('table');
    
    oSearch.onclick=function()
    {
        for(var i=0;i<oTable.tBodies[0].rows.length;i++)
        {
            sTab=oTable.tBodies[0].rows[i].cells[0].innerHTML.toLowerCase();
            sTxt=oTxt.value.toLowerCase();
            if(sTab.search(sTxt)!=-1)
            {
                oTable.tBodies[0].rows[i].style.background='yellow';
            }
            else
            {
                oTable.tBodies[0].rows[i].style.background='';
            }
        };
    };
    
};
</script>

 

加强版:多关键字

split用来分隔字符,用split使用空格把用户输入的值分隔开并赋值给数组,for循环历遍数组里面的元素,判断表格里的元素和和数组里的元素是否有,有就高亮显示。

JS代码:

 1 <script>
 2 window.onload=function()
 3 {
 4     var oTxt=document.getElementById('txt');
 5     var oSearch=document.getElementById('search');
 6     var oTable=document.getElementById('table');
 7     
 8     oSearch.onclick=function()
 9     {
10         for(var i=0;i<oTable.tBodies[0].rows.length;i++)
11         {
12             sTab=oTable.tBodies[0].rows[i].cells[0].innerHTML.toLowerCase(); //忽略大小写
13             sTxt=oTxt.value.toLowerCase();
14             var arr=sTxt.split(' '); //多关键字,用空格分隔用户输入的值并赋值给数组
15             
16             oTable.tBodies[0].rows[i].style.background='';
17             
18             for(var j=0;j<arr.length;j++) //历遍数组
19             {
20                 if(sTab.search(arr[j])!=-1) //表格里的值和用户输入的值不等于-1,就是有部分相等
21                 {
22                     oTable.tBodies[0].rows[i].style.background='yellow'; //把改行背景颜色改为黄色
23                 }
24             }
25         };
26     };
27     
28 };
29 </script>

 

最终版代码:

 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>搜索</title>
 6 <script>
 7 window.onload=function()
 8 {
 9     var oTxt=document.getElementById('txt');
10     var oSearch=document.getElementById('search');
11     var oTable=document.getElementById('table');
12     
13     oSearch.onclick=function()
14     {
15         for(var i=0;i<oTable.tBodies[0].rows.length;i++)
16         {
17             sTab=oTable.tBodies[0].rows[i].cells[0].innerHTML.toLowerCase(); //忽略大小写
18             sTxt=oTxt.value.toLowerCase();
19             var arr=sTxt.split(' '); //多关键字,用空格分隔用户输入的值并赋值给数组
20             
21             oTable.tBodies[0].rows[i].style.background='';
22             
23             for(var j=0;j<arr.length;j++) //历遍数组
24             {
25                 if(sTab.search(arr[j])!=-1) //表格里的值和用户输入的值不等于-1,就是有部分相等
26                 {
27                     oTable.tBodies[0].rows[i].style.background='yellow'; //把改行背景颜色改为黄色
28                 }
29             }
30         };
31     };
32     
33 };
34 </script>
35 </head>
36 
37 <body>
38 <input type="txt" id="txt"  />
39 <input type="button" id="search" value="搜索" />
40 <table border="1" cellspacing="0" cellpadding="0" width="100%" id="table">
41     <thead>
42         <tr>
43             <td>姓名</td>
44             <td>学号</td>
45             <td>专业</td>
46         </tr>
47     </thead>
48     <tbody>
49         <tr>
50             <td>Simon</td>
51             <td>1</td>
52             <td>A</td>
53         </tr>
54         <tr>
55             <td>Melon</td>
56             <td>2</td>
57             <td>A</td>
58         </tr>
59         <tr>
60             <td>张三</td>
61             <td>3</td>
62             <td>A</td>
63         </tr>
64         <tr>
65             <td>李四</td>
66             <td>4</td>
67             <td>A</td>
68         </tr>
69         <tr>
70             <td>王五</td>
71             <td>5</td>
72             <td>A</td>
73         </tr>
74         <tr>
75             <td>刘三</td>
76             <td>6</td>
77             <td>A</td>
78         </tr>
79     </tbody>
80 </table>
81 </body>
82 </html>
posted @ 2013-03-07 17:46  yexingwen  阅读(334)  评论(0编辑  收藏  举报