美文网首页
选项卡(js原生,数组map())

选项卡(js原生,数组map())

作者: 追马的时间种草 | 来源:发表于2019-08-09 23:02 被阅读0次

不多说,直接上效果和代码:

图片:

此选项卡就是点击响应的tab,就会显示响应的内容

Css:

 <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul li{
            list-style: none;
        }
        .tabBox{
            margin: 20px auto;
            width: 500px;
        }
        .tabBox ul{
            position: relative;
            top:1px;
        }
        .tabBox ul li{
            display: inline-block;
            padding: 0 5px;
            margin-right: 10px;
            border: 1px solid #aaaaaa;
            cursor: pointer;
            line-height: 33px;
        }
        .tabBox ul li.active{
            border-bottom-color: #ffffff;
            font-weight: bold;
            color: aqua
        }
        .tabBox div{
           display: none;
            line-height: 248px;
            text-align: center;
            border:1px solid #aaaaaa;
        }
        .tabBox div.active{
            display: block;
            
        }
    </style>

HTML:

 <div class="tabBox" id="tabBox">
       <ul>
           <li class="active">读书</li>
           <li>电影</li>
           <li>音乐</li>
       </ul>
       <div class="active">爱读书</div>
       <div>爱电影</div>
       <div>爱音乐</div>
   </div>

JS:

  //获取需要操作的元素
    var tabBox=document.getElementById('tabBox');
    var tabList=tabBox.getElementsByTagName('li')
    var divList=tabBox.getElementsByTagName('div')
    console.log( Array.from(tabList))
    console.log( Array.from(divList))
    Array.from(tabList).map((item,index)=>{//Array.from()类数组转数组后遍历Li
        Array.from(divList).map((divItem,divIndex)=>{//同上遍历div
            index==divIndex?item.onclick=()=>{//判断Li.index是否等于div.index 相等的话为tab添加点击事件
                item.className="active";//为相对应的item 添加类名active
                divItem.className="active"//同上
                var secondLi = item.parentNode.children //获取li的父节点  父节点是ul 获取后ul是类数组
                Array.from(secondLi).map((secondtt,secondIndex)=>{//第二次类数组转数组再次遍历li
                    index!==secondIndex?secondtt.className='':''//除了点击的li,其他兄弟元素删除active
                })  
                Array.from(divList).map((secondDiv,secondDivIndex)=>{//第二次类数组转数组再次遍历div
                    index!==secondDivIndex?secondDiv.className="":''//div   的其他兄弟元素删除active
                })
                
            }:''
        })
    })

此文章是一个简单的小demo,看其他人都是用for循环写的,我就想用别的方式也试试。就写了这个。希望能对你们带来帮助。这也是我的第一篇简书文章。希望自己再接再厉

相关文章

  • 选项卡(js原生,数组map())

    不多说,直接上效果和代码: 图片: Css: HTML: JS: 此文章是一个简单的小demo,看其他人都是用fo...

  • JavaScript 将对象数组转为二维数组

    利用 JS 原生的数组 map 方法,可以将对象数组转换为二维数组 const objectArray = [ ...

  • js forEach map &&&

    原生JS forEach()和map()遍历的区别以及兼容写法 一、原生JS forEach() 和map()**...

  • immutable lodash/fp ramda 对应的 删

    测试此三个库对数组的操作与原生 JS 对数组的操作尤其是 删 filter 改 map 增加 ... 这句金句对比...

  • js中的循环遍历方法对比

    JS循环大总结, for, forEach,for in,for of, map区别 map(数组方法): 特性:...

  • 2018-08-23

    js数组map的用法指“映射”。[].map(); 基本用法跟forEach方法类似:[].map(functio...

  • map

    js中的map()方法 map定义和方法 map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理的后...

  • 数组(Array)<迭代器>

    一、Js数组迭代器方法 主要介绍js数组中的forEach,every,some,filter,map迭代器方法 ...

  • 工作中常用的数据处理

    原生jsAPI 数组:map、filter、find、forEach、reduce、concat、push、uns...

  • for循环性能比较

    JS数组遍历的几种方式 JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,...

网友评论

      本文标题:选项卡(js原生,数组map())

      本文链接:https://www.haomeiwen.com/subject/gigkjctx.html