03-环境对象,排他思想

78 阅读1分钟

环境对象指的是函数内部特殊的变量 this ,它代表着当前函数运行时所处的环境

作用:弄清楚this的指向,可以让我们代码更简洁

  • 函数的调用方式不同,this 指代的对象也不同

  • 【谁调用, this 就是谁】 是判断 this 指向的粗略规则

  • 直接调用函数,其实相当于是 window.函数,所以 this 指代 window

排他思想

  • 当前元素为A状态,其他元素为B状态

使用:

  1. 干掉所有人
  • 使用for循环
  1. 复活他自己
  • 通过this或者下标找到自己或者对应的元素

TAB栏切换案例

  • CSS

    • <style type="text/css">
          * {
            margin: 0;
            padding: 0;
          }
      
          ul {
            list-style: none;
          }
      
          .wrapper {
            width: 1000px;
            height: 475px;
            margin: 0 auto;
            margin-top: 100px;
          }
      
          .tab {
            border: 1px solid #ddd;
            border-bottom: 0;
            height: 36px;
            width: 320px;
          }
      
          .tab li {
            position: relative;
            float: left;
            width: 80px;
            height: 34px;
            line-height: 34px;
            text-align: center;
            cursor: pointer;
            border-top: 4px solid #fff;
          }
      
          .tab span {
            position: absolute;
            right: 0;
            top: 10px;
            background: #ddd;
            width: 1px;
            height: 14px;
            overflow: hidden;
          }
      
          .products {
            width: 1002px;
            border: 1px solid #ddd;
            height: 476px;
          }
      
          .products .main {
            float: left;
            display: none;
          }
      
          .products .main.active {
            display: block;
          }
      
          .tab li.active {
            border-color: red;
            border-bottom: 0;
          }
        </style>
      
  • HTML

    • <div class="wrapper">
          <ul class="tab">
            <li class="tab-item active">国际大牌<span></span></li>
            <li class="tab-item">国妆名牌<span></span></li>
            <li class="tab-item">清洁用品<span></span></li>
            <li class="tab-item">男士精品</li>
          </ul>
          <div class="products">
            <div class="main active">
              <a href="###"><img src="imgs/guojidapai.jpg" alt="" /></a>
            </div>
            <div class="main">
              <a href="###"><img src="imgs/guozhuangmingpin.jpg" alt="" /></a>
            </div>
            <div class="main">
              <a href="###"><img src="imgs/qingjieyongpin.jpg" alt="" /></a>
            </div>
            <div class="main">
              <a href="###"><img src="imgs/nanshijingpin.jpg" alt="" /></a>
            </div>
          </div>
        </div>
      
  • JavaScript

    • <script>
          // 0. 获取元素
          // 得到所有的小li  
          let lis = document.querySelectorAll('.tab .tab-item')
          let divs = document.querySelectorAll('.products .main')
          // 1. 头部tab栏切换模块
          // 1.1 先给4个小li添加点击事件
          for (let i = 0; i < lis.length; i++) {
            lis[i].addEventListener('click', function () {
              // console.log(11)
              // 找到以前的active 类,移除掉 
              document.querySelector('.tab .active').classList.remove('active')
              // 当前的元素添加
              this.classList.add('active')
      
              // 2. 底部显示隐藏模块  一定要写到点击事件的里面
              document.querySelector('.products .active').classList.remove('active')
      
              // div对应序号的那个加上active 
              divs[i].classList.add('active')
            })
          }
      
      
        </script>