<div id="menu"></div>接着,我们可以使用JavaScript来动态生成树形菜单。以下是一个简单示例:
<script> // 声明菜单数据 var menuData = [ { label: "首页",url: "index.html" },{ label: "产品",children: [ { label: "产品A",url: "product-a.html" },{ label: "产品B",url: "product-b.html" } ] },{ label: "关于我们",url: "about-us.html" } ]; // 递归生成菜单HTML function generateMenuHtml(data) { var html = ""; for (var i = 0; i < data.length; i++) { var item = data[i]; html += "<li>"; if (item.children) { // 如果当前项有子项,则生成展开按钮和子菜单 html += "<span class='expand-btn' onclick='toggleMenu(this.parentElement)'/>"; html += "<a href='javascript:;' onclick='toggleMenu(this.parentElement)'>" + item.label + "</a>"; html += "<ul class='sub-menu'>" + generateMenuHtml(item.children) + "</ul>"; } else { // 如果当前项没有子项,则生成链接 html += "<a href='" + item.url + "'>" + item.label + "</a>"; } html += "</li>" } return html; } // 展开/关闭子菜单 function toggleMenu(item) { var subMenu = item.querySelector(".sub-menu"); if (subMenu) { subMenu.classList.toggle("show"); item.querySelector(".expand-btn").classList.toggle("expanded"); } } // 生成菜单HTML并插入页面 document.getElementById("menu").innerHTML = generateMenuHtml(menuData); </script>以上代码实现了以下功能: - 声明了菜单数据,其中每个菜单项包含一个标签“label”和一个URL地址“url”,如果有子菜单,则还包含一个“children”属性。 - 定义了一个递归函数用于生成菜单HTML代码,这个函数接收一个菜单数据数组作为参数,遍历数组中每个菜单项并生成相应的HTML代码。如果当前菜单项有子菜单,则生成展开按钮和子菜单HTML代码,并且再次调用自己生成子菜单HTML代码。 - 定义了一个展开/关闭子菜单的函数,当用户点击展开按钮或菜单项时,会调用这个函数来切换子菜单的显示状态和展开按钮的样式。 - 在HTML文档中插入了一个空的菜单容器,然后使用JavaScript代码生成菜单HTML并插入到容器中。 通过这样的方式,我们可以轻松地实现一个动态的树形菜单,并且可以根据需要动态修改菜单数据而不需要手动修改HTML代码。这种方法不仅提高了开发效率,还使网站结构更加清晰易于维护。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。