ES6——class类实现选项卡切换
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>简单的选项卡功能</title>
<style>
.tab .tab-content{
display: none;
}
.tab .tab-content.active{
display: block;
}
</style>
</head>
<body>
<div class="app">
<div class="tab tab-wrapper">
<div class="tab-btn">
<button class="tab-btn-item">tab选项1</button>
<button class="tab-btn-item">tab选项2</button>
<button class="tab-btn-item">tab选项3</button>
<button class="tab-btn-item">tab选项4</button>
<button class="tab-btn-item">tab选项5</button>
</div>
<div class="tab-content">tab内容1</div>
<div class="tab-content">tab内容2</div>
<div class="tab-content">tab内容3</div>
<div class="tab-content">tab内容4</div>
<div class="tab-content">tab内容5</div>
</div>
</div>
<script src="./js/tab.js"></script>
</body>
</html>
js
class Tab{
constructor(wrapper) {
this.tab = document.querySelector(wrapper);
this.tabList = this.tab.querySelectorAll(".tab-btn-item");
this.tabList = Array.from(this.tabList);
this.cList = this.tab.querySelectorAll(".tab-content");
this.addEventn();
this.#tabClickHandler(this.tabList[0])
};
#tabClickHandler(target) {
let item = null;
let index = this.tabList.findIndex(val => {
return Object.is(target, val);//target===val
});
if (index == -1) return false;
for (let i = 0; i < this.cList.length; i++) {
// item = this.cList[i];
// item.classList.remove("active");
this.cList[i].classList.remove("active");
}
this.cList[index].classList.add("active");
}
addEventn() {
for (let i = 0; i < this.tabList.length; i++) {
this.tabList[i].addEventListener("click",e=>this.#tabClickHandler(e.target) ,false);
}
};
}
let t = new Tab(".tab-wrapper");