环境对象指的是函数内部特殊的变量 this ,它代表着当前函数运行时所处的环境
作用:弄清楚this的指向,可以让我们代码更简洁
-
函数的调用方式不同,this 指代的对象也不同
-
【谁调用, this 就是谁】 是判断 this 指向的粗略规则
-
直接调用函数,其实相当于是 window.函数,所以 this 指代 window
排他思想
- 当前元素为A状态,其他元素为B状态
使用:
- 干掉所有人
- 使用for循环
- 复活他自己
- 通过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>
-
-