【发布时间】:2021-03-06 16:12:44
【问题描述】:
我用 Javascript 构建了一个标签系统。手动它工作正常,但我希望它自动工作。 我想要一个无限循环,我以 6 秒的间隔遍历每个选项卡,然后再次从选项卡的开头开始。当用户点击一个标签时,这个循环应该停止。
我已经搜索了解决方案,但找不到任何适用于 vanilla javascript 的内容或不明白(我是个大人物)。大多数解决方案都在 jquery 中可用。但我只想要javascript。
这里是这个问题的codepen Codepen
这里是示例 Html 代码
<div id="tabs-id">
<ul>
<li>
<a onclick="changeAtiveTab(event,'tab1')"> Tab 1 </a>
</li>
<li>
<a onclick="changeAtiveTab(event,'tab2')"> Tab 2 </a>
</li>
<li>
<a onclick="changeAtiveTab(event,'tab3')"> Tab 3 </a>
</li>
<li>
<a onclick="changeAtiveTab(event,'tab4')"> Tab 4 </a>
</li>
</ul>
</div>
<div class="tab-content tab-space">
<div class="block" id="tab1">
<div class="container">Tab 1 content</div>
</div>
<div class="hidden" id="tab2">
<div class="container">Tab 2 content</div>
</div>
<div class="hidden" id="tab3">
<div class="container">Tab 3 content</div>
</div>
<div class="hidden" id="tab4">
<div class="container">Tab 4 content</div>
</div>
</div>
和Javascript
function changeAtiveTab(event, tabID) {
let element = event.target;
while (element.nodeName !== "A") {
element = element.parentNode;
}
ulElement = element.parentNode.parentNode;
aElements = ulElement.querySelectorAll("li > a");
tabContents = document
.getElementById("tabs-id")
.querySelectorAll(".tab-content > div");
for (let i = 0; i < aElements.length; i++) {
aElements[i].classList.remove("border-t-4");
aElements[i].classList.remove("font-bold");
tabContents[i].classList.add("hidden");
tabContents[i].classList.remove("block");
}
element.classList.add("border-t-4");
element.classList.add("font-bold");
document.getElementById(tabID).classList.remove("hidden");
document.getElementById(tabID).classList.add("block");
}
【问题讨论】:
-
@FZs 感谢您的建议,但这不是我问题的答案。我的问题是要添加一个自动化功能,然后在点击时删除该功能。
-
您可以使用
clearInterval()清除点击间隔。你不明白的部分是什么?对我来说,那里的解决方案似乎可以在这里使用......只需将console.log替换为changeAtiveTab的调用即可 -
@FZs 我已经应用了两个建议的解决方案,但仍然不能解决我的问题,你可以在这里查看codepen.io/Zaraa/pen/bGeXKWN?editors=1111
标签: javascript html css tailwind-css