实现切换按钮

<!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;
        }
        ul{
            width:200px;
            height:20px;
            overflow:hidden;
        }
        li{
            box-sizing:border-box;
            list-style:none;
            float:left;
            width:20px;
            height:20px;
            margin:0 10px 0 10px;
            border-radius:10px;
            text-align:center;
            line-height:20px;
            background:white;
            border:1px solid #000000;
        }
        div{
            width:40px;
            height:100px;
            float:left;
            background:red;
            visibility:hidden;
            
        }
    </style>
</head>
<body>
    <ul>
        <li id="li1">1</li>
        <li id="li2">2</li>
        <li id="li3">3</li>
        <li id="li4">4</li>
        <li id="li5">5</li>
    </ul>
    <div id="div1">1111</div>
    <div id="div2">2222</div>
    <div id="div3">3333</div>
    <div id="div4">4444</div>
    <div id="div5">5555</div>
    <script>
        var prevDiv,prevDot;
        init();
        function init(){
            for(i=1;i<6;i++){
                var li=document.getElementById("li"+i);
                li.onclick=clickHeadler;
            }
        }
        function clickHeadler(){
            var div=getDiv(this);
            changeDiv(div);
            changeLi(this);
        }
        function getDiv(li){
            if(li===li1) return document.getElementById("div1");
            if(li===li2) return document.getElementById("div2");
            if(li===li3) return document.getElementById("div3");
            if(li===li4) return document.getElementById("div4");
            if(li===li5) return document.getElementById("div5");
        }
        function changeDiv(div){
            if(prevDiv!==undefined){
                prevDiv.style.visibility="hidden";
            }
            prevDiv=div;
            div.style.visibility="visible";
        }
        function changeLi(li){
            if(prevDot!==undefined){
                prevDot.style.background="white";
            }
            prevDot=li;
            li.style.background="yellow";
        }
    </script>
</body>
</html>

整体思路:要实现当点击小圆点后,对应的盒子显示并且小圆点的颜色改变
        init函数 
        1.通过循环六轮,每轮通过document.getElementById方法获取当下小圆点元素,并通过点击事件给每个小圆点元素
        绑定点击事件。虽然这里的变量li的值每次循环都会变化,但是每轮绑定点击事件的是对应的那个小圆点对象
       
        clickHeadler函数 
        2.因为点击事件里包括几件事情,所以用一个函数给包起来,此时这个函数里调用的函数与点击事件所绑定的元素
        的联系全靠this,this指向触发点击事件的对象
       
        getDiv函数 
        3.这个函数是为了使点击的小圆点和对应的盒子联系起来,通过判断传入的实参是哪个小圆点{(即id===id)id
        就可以找到那个独有的对象,这里的id就是代表了那个元素(对象)名}*来返回对应的盒子,这里先通过
        document.getElementById方法获取当下元素才返回的
        
        changeDiv函数 
        4.这个函数通过传入的盒子对象名来控制盒子的显示,通过改变div.style.visibility属性值来做到
        但是有一点注意,因为这里如果只控制显示的话,那么到后面点击的小圆点对应的盒子都会显示,达不到想要的效果
        所以需要在对当前盒子进行操作前需要先把前一个盒子的显示恢复原样。通过prevDiv这个中间变量能够记录当前盒子,
        轮到下一轮调用函数时,就可以利用它来把前一个盒子的显示恢复原样(判断它是否为undefined,因为只要调用了,
        它就是一个对象)
        
        changeLi函数 
        5.和4的思路一样。

效果图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值