要在原生 JavaScript 中实现一个菜单树,通常涉及以下几个步骤:
下面是一个简单的示例,展示如何使用原生 JavaScript 实现一个基本的菜单树:
const menuData = [
{
name: '菜单1',
children: [
{ name: '子菜单1-1' },
{ name: '子菜单1-2', children: [{ name: '子菜单1-2-1' }] }
]
},
{
name: '菜单2',
children: [
{ name: '子菜单2-1' },
{ name: '子菜单2-2' }
]
},
{ name: '菜单3' }
];
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>菜单树示例</title>
<style>
ul {
list-style-type: none;
padding-left: 20px;
}
.menu-item {
cursor: pointer;
}
.submenu {
display: none;
}
</style>
</head>
<body>
<ul id="menu"></ul>
<script src="menu.js"></script>
</body>
</html>
// menu.js
function createMenu(data, parentElement) {
data.forEach(item => {
const li = document.createElement('li');
const span = document.createElement('span');
span.textContent = item.name;
span.classList.add('menu-item');
li.appendChild(span);
if (item.children && item.children.length > 0) {
const ul = document.createElement('ul');
ul.classList.add('submenu');
li.appendChild(ul);
createMenu(item.children, ul);
span.addEventListener('click', function(event) {
event.stopPropagation();
ul.style.display = ul.style.display === 'block' ? 'none' : 'block';
});
}
parentElement.appendChild(li);
});
}
document.addEventListener('DOMContentLoaded', () => {
const menuContainer = document.getElementById('menu');
createMenu(menuData, menuContainer);
});
menuData
是一个嵌套的数组,每个菜单项可以有一个 children
属性,表示其子菜单。createMenu
函数递归地遍历数据结构,为每个菜单项创建相应的 HTML 元素,并将其插入到指定的父元素中。通过这种方式,你可以使用原生 JavaScript 实现一个功能齐全的菜单树,并根据需要进行扩展和定制。
DB・洞见
腾讯云数智驱动中小企业转型升级·系列主题活动
Tencent Serverless Hours 第15期
第四期Techo TVP开发者峰会
第四期Techo TVP开发者峰会
云+社区沙龙online [新技术实践]
腾讯云数据湖专题直播
云+社区沙龙online [国产数据库]
云+社区沙龙online [国产数据库]
领取专属 10元无门槛券
手把手带您无忧上云