2020-11-07|排他思想以及应用

本文介绍了JavaScript中的排他思想,并通过两个案例进行阐述:一是模仿百度换肤效果,利用循环注册点击事件,点击图片使页面背景变为当前图片;二是实现表格隔行变色,使用onmouseover和onmouseout事件,使鼠标经过tbody中的tr行时变色,离开时恢复原状。这两个案例展示了排他思想在实际编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

排他思想:

我们想要某一个元素实现某种样式,需要用到循环的排他思想:

1.所有元素全部清楚样式

2.给当前元素设置样式(留下我自己)

3.注意顺序不能颠倒,首先干掉其他人,再设置自己

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>

    </style>


</head>

<body>
    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
    <button>按钮4</button>
    <button>按钮5</button>
    <script>
        1. //获取所有元素
        var btns = document.getElementsByTagName('button');
        //btn得到的是伪数组   里面的每一个元素btns[i];
        for (var i = 0; i < btns.length; i++) {
            btns[i].onclick = function() {
                //我们先把所有的按钮背景颜色去掉
                for (var i = 0; i < btns.length; i++) {
                    btns[i].style.backgroundColor = '';
                }
                //然后才让当前的元素背景颜色为pink
                this.style.background = 'pink';
            }
        }
    </script>


</body>

</html>

案例:模仿百度换肤效果

  1. 这个案例联系的是给一组元素注册事件
  2. 这四个小图片利用循环注册点击事件
  3. 当我们点击了这个图片,让我们的页面背景改为当前的图片
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        body {
            background: url(test1/1.jpg) no-repeat center top;
        }
        
        li {
            list-style: none;
        }
        
        .baidu {
            overflow: hidden;
            margin: 100px auto;
            background-color: #fff;
            width: 410px;
            padding-top: 3px;
        }
        
        .baidu li {
            float: left;
            margin: 0 1px;
            cursor: pointer;
        }
        
        .baidu img {
            width: 100px;
        }
    </style>


</head>

<body>
    <ul class="baidu">
        <li><img src='test1/1.jpg' alt=''></li>
        <li><img src='test1/2.jpg' alt=''></li>
        <li><img src='test1/3.jpg' alt=''> </li>
        <li><img src='test1/4.jpg' alt=''></li>

    </ul>
    <script>
        //获取元素
        var imgs = document.querySelector(".baidu").querySelectorAll("img");
        for (var i = 0; i < imgs.length; i++) {
            imgs[i].onclick = function() {
                console.log(this.src);
                document.body.style.backgroundImage = 'url(' + this.src + ')'

            }
        }
    </script>


</body>

</html>

案例:表格隔行变色效果

用到新的鼠标事件经过onmouseover   鼠标离开onmouseout

核心思路:鼠标经过tr行,当前的行变背景颜色,鼠标离开去掉当前的背景颜色

注意:第一行thead里面的行不需要变换颜色,因此我们获取的是tbody里面的行

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0px;
            padding: 0px;
        }
        
        .box {
            margin: 100px auto;
        }
        
        .box thead td {
            border: blue solid 1px;
        }
        
        .box tbody tr td {
            border: blue solid 1px;
        }
        
        .box thead {
            background-color: antiquewhite;
        }
        
        .bg {
            background-color: pink;
        }
    </style>

</head>

<body>
    <table class="box" cellspacing=0 px>
        <thead>
            <td>代码</td>
            <td>名称</td>
            <td>最新公布净值</td>
            <td>累计净值</td>
            <td>新单位净值</td>
            <td>净值增长率</td>
        </thead>
        <tbody>
            <tr>
                <td>003526</td>
                <td>译音紧随3个月开放债券</td>
                <td>10075</td>
                <td>1.098</td>
                <td>1.074</td>
                <td>+0.074%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>译音紧随3个月开放债券</td>
                <td>10075</td>
                <td>1.098</td>
                <td>1.074</td>
                <td>+0.074%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>译音紧随3个月开放债券</td>
                <td>10075</td>
                <td>1.098</td>
                <td>1.074</td>
                <td>+0.074%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>译音紧随3个月开放债券</td>
                <td>10075</td>
                <td>1.098</td>
                <td>1.074</td>
                <td>+0.074%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>译音紧随3个月开放债券</td>
                <td>10075</td>
                <td>1.098</td>
                <td>1.074</td>
                <td>+0.074%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>译音紧随3个月开放债券</td>
                <td>10075</td>
                <td>1.098</td>
                <td>1.074</td>
                <td>+0.074%</td>
            </tr>

        </tbody>
    </table>
    <script>
        var tns = document.querySelector("tbody").querySelectorAll("tr");
        for (var i = 0; i < tns.length; i++) {
            tns[i].onmouseover = function() {
                this.className = 'bg';
            }
            tns[i].onmouseout = function() {
                this.className = '';
            }
        }
    </script>
</body>

</html>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值