js 排他思想 和 选项卡案例

    *{
        margin: 0px;
        padding: 0px;
    }
    .box{
        width: 500px;
        height: 400px;
        margin: 80px auto;
        border: 1px solid;
    }
    .box .up{
        height: 30px;
        line-height: 30px;
        display: flex;
        justify-content: space-around;;
    }
    .box .up span{
        width: 80px;
        background-color: coral;
        text-align: center;
        cursor: pointer;
    }
    .box .content{
        height: 370px;
    }
    .box .content div{
        height: 370px;
        background-color: gold;
        text-align: center;
        line-height: 370px;
        font-size: 30px;
        color: green;
        display: none;
    }
    .box .up .bg{
        background-color: chartreuse;
    }
</style>
<body>
<div class="box">
    <div class="up">
        <span>股票</span>
        <span>理财</span>
        <span>金融</span>
        <span>风投</span>
        <span>保险</span>
    </div>
    <div class="content">
        <div style="display:block">我是股票</div>
        <div>我是理财</div>
        <div>我是金融</div>
        <div>我是风投</div>
        <div>我是保险</div>
    </div>
</div>
  <script>
    //获取元素
    var spans=document.querySelector(".up")
    var pans=spans.children
    var divs=document.querySelector(".content")
    var dvs=divs.children
    //绑定事件
    for(var i=0;i<pans.length;i++){ //5个按钮 ,我们点按钮的时候都弹出一个事件,来个遍历,给每个按钮绑定事件
        pans[i].index=i//把span的下标赋值给div,因为div改变属性也是事件调用的,
                       //需要用this指明,这里用span 的下标值(被this过)赋值来使用
        pans[i].onclick=function(){ //绑定事件,用排他思想,为什么?我们的需求是点击按钮,出现效果,
                                    //点另外一个按钮时候,之前那个按钮恢复过去,即点的时候有样式,不点的时候没有
                                    //所以排他,先干掉所有的样式,包括自己,点击的时候在重新复制
          for(var j=0;j<pans.length;j++){
              pans[j].className=""          //排他,清除按钮类名和div的样式
              dvs[j].style.display="none"
          }                              //开始赋值,this---事件调用函数,并且在循环里,会先循环完。在执行函数
       this.className="bg"               //所以用this指向事件调用者 
       dvs[this.index].style.display="block"
        }
    }
    
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值