JavaScript 左侧树形菜单是一种常见的用户界面元素,用于展示层次结构的数据。以下是一个简单的树形菜单代码示例,包括展开和折叠功能。
树形菜单是一种基于树结构的数据展示方式,每个节点可以有多个子节点,通常用于表示文件系统、组织结构或任何具有层次关系的数据。
以下是一个简单的静态树形菜单的 HTML 和 JavaScript 代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tree Menu Example</title>
<style>
ul.tree-menu {
list-style-type: none;
padding-left: 20px;
}
.tree-menu li {
cursor: pointer;
}
.tree-menu .node {
display: inline-block;
margin-right: 5px;
}
.tree-menu .children {
display: none;
}
.tree-menu .expanded > .children {
display: block;
}
</style>
</head>
<body>
<ul class="tree-menu">
<li>
<span class="node">+</span> Node 1
<ul class="children">
<li>Subnode 1.1</li>
<li>Subnode 1.2</li>
</ul>
</li>
<li>
<span class="node">+</span> Node 2
<ul class="children">
<li>Subnode 2.1</li>
<li>Subnode 2.2</li>
</ul>
</li>
</ul>
<script>
document.addEventListener('DOMContentLoaded', function() {
const nodes = document.querySelectorAll('.tree-menu .node');
nodes.forEach(node => {
node.addEventListener('click', function(event) {
event.stopPropagation();
const parentLi = this.parentElement;
parentLi.classList.toggle('expanded');
this.textContent = parentLi.classList.contains('expanded') ? '-' : '+';
});
});
});
</script>
</body>
</html>
<ul>
和 <li>
元素来表示树形结构。<span>
元素用于显示展开/折叠符号(+
或 -
)。.tree-menu
类用于设置列表样式。.children
类默认隐藏子节点。.expanded
类用于展开节点时显示子节点。<li>
元素的 expanded
类,从而显示或隐藏子节点。问题:点击节点时没有展开或折叠。 原因:可能是事件监听器没有正确绑定,或者 CSS 样式没有正确应用。 解决方法:
DOMContentLoaded
事件)。通过以上步骤,可以创建一个基本的树形菜单,并解决常见的展开/折叠问题。
领取专属 10元无门槛券
手把手带您无忧上云