有五个独立章节<section></section>和导航栏,请问怎样利用导航栏当中的无序列表项来控制独立章节内容的开关,利用JavaScript,求完整代码
时间: 2024-11-29 07:32:23 浏览: 20
要实现这样的功能,你可以创建一个HTML结构,包含无序列表(`<ul>`)作为导航栏,并结合JavaScript来控制每个章节 `<section>` 的显示隐藏。下面是一个简单的示例代码:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<title>章节切换</title>
<style>
.hidden {
display: none;
}
</style>
</head>
<body>
<header>
<nav id="navbar">
<ul>
<li><a href="#" data-target="#chapter1">章节1</a></li>
<li><a href="#" data-target="#chapter2">章节2</a></li>
<li><a href="#" data-target="#chapter3">章节3</a></li>
<li><a href="#" data-target="#chapter4">章节4</a></li>
<li><a href="#" data-target="#chapter5">章节5</a></li>
</ul>
</nav>
</header>
<main>
<section id="chapter1" class="hidden">
<h2>章节1的内容</h2>
<!-- 内容... -->
</section>
<section id="chapter2" class="hidden">
<h2>章节2的内容</h2>
<!-- 内容... -->
</section>
<!-- 更多章节... -->
<section id="chapter5" class="hidden">
<h2>章节5的内容</h2>
<!-- 内容... -->
</section>
</main>
<script>
document.querySelectorAll('nav a').forEach((link) => {
link.addEventListener('click', (event) => {
event.preventDefault(); // 阻止默认链接跳转
const target = event.target.dataset.target; // 获取目标章节ID
const sections = document.querySelectorAll(`#${target}`);
// 遍历所有章节并隐藏它们
Array.from(sections).forEach((section) => {
section.classList.add('hidden');
});
// 展开点击的章节
sections[0].classList.remove('hidden'); // 只展开第一个,你需要根据需求调整这里
});
});
</script>
</body>
</html>
```
在这个例子中,每个导航栏的链接都有一个 `data-target` 属性,指向对应的章节ID。当用户点击链接时,JavaScript会遍历所有章节,隐藏当前可见的章节,然后只显示目标章节。
阅读全文