38-TAB选项卡终极(和原生JS进行了对比)

     感想:原生JS和jQuery相比:
             1.原生JS是对dom节点直接进行操作,不能使用addClass和removeClass方法,而jQuery是对jQuery对象进行操作
             即:$()获取到的是一个对象,而原生JS获取到的是dom节点
             2.可以发现,JS的代码更多,for循环使用也更多,效率较低,而jQuery的逻辑很清晰,效率较高
     

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>38-TAB选项卡终极</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 440px;
            height: 298px;
            border: 1px solid #000;
            margin: 50px auto;
        }
        .nav>li{
            list-style: none;
            width: 110px;
            height: 50px;
            background: orange;
            text-align: center;
            line-height: 50px;
            float: left;
        }
        .nav>.current{
            background: #ccc;
        }
        .content>li{
            list-style: none;
            display: none;
        }
        .content>.show{
            display: block;
        }
    </style>
    <script src="JS_file/jquery-1.12.4.js"></script>
    <script>

   //    这样即解决了上个问题,又简写了代码,效率提高
   /*      $(function () {
             $(".nav>li").mouseenter(function () {
                 //1.1修改被移入选项卡的背景颜色
                 $(this).addClass("current");
             //1.2还原其他兄弟选项卡的背景颜色,sibling意思是除了当前选中节点的其他全部兄弟节点
                 $(this).siblings().removeClass("current");
             //    1.3获取当前选项卡的索引
                 var index=$(this).index();
             //    1.4根据索引找到对应图片
                 var $li=$(".content>li").eq(index);
             //    1.5添加对应图片
                 $li.addClass("show");
             //    1.6隐藏非当前的其他全部图片
                 $li.siblings().removeClass("show");
             })
         })*/
        //这是原生的JS写的同样实现TAB选项卡的功能
        window.onload=function () {
            //获取第一个ul
            var oNav=document.getElementsByClassName("nav")[0];
            //获取第二个ul
            var oContent=document.getElementsByClassName("content")[0];
            //获取第一个ul的li
            var aLi1=oNav.getElementsByTagName("li");
            //获取第二个li的数组
            var aLi2=oContent.getElementsByTagName("li");
            //for循环遍历aLi1或者aLi2数组
            for (var i=0;i<aLi1.length;i++)
            {
                //给每个li添加一个index索引属性,并赋值为i
                aLi1[i].index=i;
                //给li绑定移入事件
                aLi1[i].onmouseenter=function () {
                   // 移入了之后,做的第一件事是将所有的li的class清空,即全部变黄
                   for(var j=0;j<aLi1.length;j++)
                   {
                       aLi1[j].className="";
                   }
                   //移入哪个就给哪个添加class为"current",即变灰
                   this.className="current";
                   //然后将所有的图片的class清空,即全部隐藏
                   for(var k=0;k<aLi2.length;k++)
                   {
                       aLi2[k].className="";
                   }
                   //将选择的选项卡所对应的图片的class为"show",即显示该图片
                   aLi2[this.index].className="show";
                }

            }
          

        }
    </script>
</head>
<body>
<div class="box">
    <ul class="nav">
        <li class="current">H5+C3</li>
        <li>jQuery</li>
        <li>C语言</li>
        <li>Go语言</li>
    </ul>
    <ul class="content">
        <li class="show"><img src="images/11.png"></li>
        <li><img src="images/12.png"></li>
        <li><img src="images/13.png"></li>
        <li><img src="images/14.png"></li>
    </ul>
</div>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值