我不确定你想对“绿色”类做什么,因为你的 CSS 中没有它的规则。我回答这个问题时假设您希望活动选项卡与活动页面的颜色相同。抱歉,如果这不是您的意图,但我认为这是有道理的。
为了避免特定类名出现问题,您可以使用 .classList 方法,例如“add”和“remove”。这样您就不必担心标记中类名的顺序。例子:
tabs[i].classList.remove('active')
e.currentTarget.classList.add('active')
您还可以动态附加事件侦听器(点击处理程序)以保持 HTML 整洁。例子:
for(j = 0; j < tabs.length; j++) {
// attach event listener to all tabs
tabs[j].addEventListener('click', clickTab)
}
您还可以通过将相似的样式分配给公共类来减少 CSS 的重复性:
.page {display:none;}
.page.active {
display:flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
我修改了您的 ID,以便能够独立引用选项卡和页面,而无需将参数显式传递给单击处理程序函数。例子:
<li id="t2" class="tab">TAB2</li>
...
<article class="page" id="p2">...</article>
这是我的 JS Bin:
http://jsbin.com/defidih/edit?html,css,js,控制台,输出 http://jsbin.com/defidih/edit?html,css,js,console,output