JS实现表格隔行变色

用到的鼠标事件:(1)鼠标经过 onmouseover;(2)鼠标离开 onmouseout

核心思路鼠标经过 tr 行的时候,当前行会改变背景颜色,鼠标离开的时候去掉背景颜色。

注意:第一行(thead 里面的行)不需要变换颜色,改变的是 tbody 里面的行。

1、获取元素,获取的是 tbody里面的行。

2、循环注册绑定事件,将 tbody 里面全部的行都得到,然后全部都注册鼠标经过和离开事件。

3、所有行绑定鼠标经过事件,鼠标经过当前元素(this)改变颜色;

4、所有行绑定鼠标离开事件,鼠标离开当前元素(this)没有颜色;

代码如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>表格隔行变色</title>
 6   <style type="text/css">
 7       *{
 8           margin:0;padding: 0;
 9       }
10       table{
11           width:500px;
12           position:relative;
13           margin:100px auto;
14           border-collapse:collapse;
15           /*合并表格单一边框*/
16           border:1px solid #d7d7d7;
17       }
18       thead tr{
19           background-color:#ccc;
20           height:30px;
21       } 
22       table tr{
23           text-align: center;
24           height:30px;
25       }
26       .bg{
27           background: #eee;
28       }                                                                           
29 </style>
30 </head>
31 <body>
32 <table  border=1>
33     <thead>
34         <tr>
35             <td width="40">序号</td>
36             <td width="100">前端单词</td>
37             <td width="80">基本释义</td>
38             <td width="50">长度</td>
39             <td width="">补充</td>    
40         </tr>
41     </thead>
42     <tbody>
43         <tr>
44                    <td>1</td>
45                    <td>select</td>
46                    <td>选择</td>
47                    <td>6</td>
48                    <td>-</td>
49              </tr>
50              <tr>
51                    <td>2</td>
52                    <td>target</td>
53                    <td>目标</td>
54                    <td>6</td>
55                    <td>-</td>
56              </tr>
57              <tr>
58                    <td>3</td>
59                    <td>input </td>
60                    <td>输出</td>
61                    <td>5</td>
62                    <td>-</td>
63              </tr>
64              <tr>
65                    <td>4</td>
66                    <td>button</td>
67                    <td>按钮</td>
68                    <td>8</td>
69                    <td>-</td>
70              </tr>
71              <tr>
72                    <td>5</td>
73                    <td>checkbox</td>
74                    <td>复选框</td>
75                    <td>8</td>
76                    <td>-</td>
77              </tr>
78     </tbody>
79 </table>
80 <script>
81     //1、获取tbody里面的所有的行
82     var trs = document.querySelector('tbody').querySelectorAll('tr');
83     //2、利用循环注册事件
84     for(var i = 0;i<trs.length;i++){
85         var bgc = function(e){this.className = 'bg';}
86         trs[i].addEventListener('mouseover',bgc)
87         trs[i].onmouseout = function(){
88             this.className = '';
89         }
90     }
91 </script>
92 </body>
93 </html>

显示效果:

当鼠标滑过时:

 当鼠标离开时:

当然这个效果使用 CSS的 :hover 可以非常简单的实现(tbody tr:hover{background: #eee;}),但是在这个例子中主要想体现的是使用JS事件和排他思想实现的效果。

 

猜你喜欢

转载自www.cnblogs.com/nyw1983/p/11925281.html