html部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>tab栏切换</title>
<style>
* {
margin: 0;
padding: 0;
}
.tab {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.clearfix::after {
display: block;
content: "";
clear: both;
}
.tab_list {
width: 80%;
margin: 50px auto;
background-color: gray;
}
.tab_list ul {
list-style: none;
/* display: flex; */
}
.tab_list ul li {
padding: 10px;
float: left;
display: block;
cursor: pointer;
}
.tab_list .current {
background-color: #c81623;
color: #ffffff;
}
.tab_con {
width: 80%;
margin: 50px auto;
padding: 10px;
}
.tab_con .item {
display: none;
/* display: block; */
}
.block {
display: block;
}
.tab_con .item:nth-child(1) {
display: block;
}
</style>
</head>
<body>
<div class="tab">
<div class="tab_list clearfix">
<ul>
<li class="current">商品介绍</li>
<li>规格与包装</li>
<li>售后保障</li>
<li>商品评价(500000)</li>
<li>手机社区</li>
</ul>
</div>
<div class="tab_con">
<div class="item">商品介绍内容</div>
<div class="item">规格与包装内容</div>
<div class="item">售后保障内容</div>
<div class="item">商品评价(500000)内容</div>
<div class="item">手机社区内容</div>
</div>
</div>
</body>
</html>
script部分
方法一;(es6的 let 定义变量)
解决变量在绑定事件之后,默认的函数传值为事件源
<script>
// 方法一:
var lis = document.getElementsByTagName('li');
var items = document.getElementsByClassName('item');
for (let i = 0; i < lis.length; ++i) {
lis[i].onclick = function() {
for (var j = 0; j < lis.length; ++j) {
lis[j].className = '';
items[j].style.display = 'none';
}
this.className = 'current';
items[i].style.display = 'block';
}
}
</script>
方法二(用 自定义属性 解决)
<script>
// 方法二:
// 1. 获取
var lis = document.getElementsByTagName('li');
var items = document.getElementsByClassName('item');
// 2. 排他思想
for (var i = 0; i < lis.length; i++) {
// 给 5 个小 li 设置索引号
lis[i].setAttribute('index', i);
lis[i].onclick = function() {
// 清除
for (var i = 0; i < lis.length; i++) {
lis[i].className = '';
items[i].style.display = 'none';
}
// 自己添加
this.className = 'current';
// 取值, 显示。
var index = this.getAttribute('index');
items[index].style.display = 'block';
}
}
</script>