鼠标放到表格整行变色效果怎么实现?

鼠标放到表格上整行变色效果怎么实现?现在有个黑马程序员HTML&JS+前端开发课程的开班表格,如下图所示:

鼠标悬停表格变色

我们需要通过JS实现鼠标放到表格上整行变色,如何实现这个功能呢?

表格HTML代码如下:

<table>
    <thead>
        <tr>
            <th></th>
            <th>班级类型</th>
            <th>开班时间</th>
            <th>开班状态</th>
        </tr>
    </thead>
    <tbody id="tb">
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>基础班</td>
            <td>2021-08-31</td>
            <td>报满已开</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>基础班</td>
            <td>2021-09-11</td>
            <td>报满已开</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>高手班</td>
            <td>2021-08-05</td>
            <td>报满已开</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>高手班</td>
            <td>2021-09-28</td>
            <td>报满已开</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>高手班</td>
            <td>2021-11-11</td>
            <td>即将开班</td>
        </tr>
    </tbody></table>

功能实现思路:

1、事件委托,将mouseover事件绑定到tbody上,当鼠标移动到表格上时触发

2、通过target事件对象找到父级元素tr,并改变其背景色

3、将mouseout事件绑定到tbody上,鼠标移出时触发

下面通过代码实现:

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>通过JS使表格悬浮变色|web前端高手班 http://web.itheima.com</title>
    <style>
        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
            width: 500px;
        }

        th,
        td {
            border: 1px solid #d0d0d0;
            color: #404060;
            padding: 10px;
            text-align: center;
        }
    </style></head><body>
    <table>
        <thead>
            <tr>
                <th></th>
                <th>班级类型</th>
                <th>开班时间</th>
                <th>开班状态</th>
            </tr>
        </thead>
        <tbody id="tb">
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>基础班</td>
                <td>2021-08-31</td>
                <td>报满已开</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>基础班</td>
                <td>2021-09-11</td>
                <td>报满已开</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>高手班</td>
                <td>2021-08-05</td>
                <td>报满已开</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>高手班</td>
                <td>2021-09-28</td>
                <td>报满已开</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>高手班</td>
                <td>2021-11-11</td>
                <td>即将开班</td>
            </tr>
        </tbody>
    </table></body><script>
    // 1:需要为所有tr绑定悬浮事件,利用事件委托,只需要给父级绑定事件即可
    // 2:找到父级元素,绑定事件
    var tb = document.getElementById('tb');
    tb.onmouseover = function(ev){
        // 3:获取事件对象,利用事件对象获取target(具体触发事件的元素)
        // console.log(ev.target);
        // 注意,触发事件的是 td  ,而我们需要让tr改变背景颜色
        // console.log(ev.target.parentElement)
        ev.target.parentElement.style.background = '#f5f5f5'
    }

    tb.onmouseout = function(ev){
        // 3:获取事件对象,利用事件对象获取target(具体触发事件的元素)
        // console.log(ev.target);
        // 注意,触发事件的是 td  ,而我们需要让tr改变背景颜色
        // console.log(ev.target.parentElement)
        ev.target.parentElement.style.background = ''
    }
    // 改变当前行的背景颜色</script></html>

最终效果:

代鼠标放到表格上整行变色


THE END

文章版权:作者:黑马  来源:黑马程序员  

免责声明:本站提供的一切软件、插件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

本文最后更新于 2023-06-07 16:10:18,如果你的问题还没有解决,可以加入建站交流群和群友们一起讨论。

评论区