JS案例-状态栏/导航栏/选项卡切换
style只做最基础的样式。让页面正常显示即可,我们的目标是完成js部分代码
页面布局如下:
12311 124
10- 商品介绍
5- 规格和包装
6- 售后保障
7- 商品评价
8- 手机社区
9133114 商品介绍模块内容 151617 规格和包装内容 181920 售后保障内容 212223 商品评价内容 242526 手机社区内容 2728 29 30
网页效果运行:
目标功能要求:点击不同的选项卡,有当前选项卡的选中效果
选项卡下方显示相对应的内容,例如点击了 ‘ 售后保障 ’
选项卡下方显示跟 ‘售后保障’ 有关的内容
实现思路:
分为两大模块实现,先实现选项卡上方选中效果
在本案例中,我们是通过选中的选项添加 .current 这个类实现的
1 // 获取元素.拿到父亲 2 var tab_list = document.querySelector('.tab_list'); 3 // 通过父亲拿到孩子 4 var lis = tab_list.querySelectorAll('li');
然后for循环绑定点击事件,这里用到 排他思想:清除所有人的类,然后只留下自己
for (var i = 0; i < lis.length; i++) { lis[i].onclick = function () { // 干掉所有人,其余的li清除class这个类 for (var i = 0; i < lis.length; i++) { lis[i].className = ''; } // 留下自己 this.className = 'current'; }
到这里,第一部分已经完成
第二部分:获取点击元素的索引(通过自定义属性setAttribute实现)
语法如下:
setAttribute(name, value)
这里写在for循环里面
lis[i].setAttribute('index', i);
然后可以将值赋值给一个index变量
// 得到点击的li的自定义索引 var index = this.getAttribute('index');
最后将相对应的元素的display设置为block即可(或者添加一个类,这个类是用来控制元素的显示隐藏的)
items[index].style.display = 'block';
最后,贴出本案例的所有代码,如下:
Document
- 商品介绍
- 规格和包装
- 售后保障
- 商品评价
- 手机社区
商品介绍模块内容
规格和包装内容
售后保障内容
商品评价内容
手机社区内容