在JavaScript中实现三级树形菜单通常涉及到数据结构的设计、DOM操作以及事件处理。下面我会给出一个基础的概念解释,以及一个简单的示例代码来实现三级树形菜单。
以下是一个简单的三级树形菜单的实现:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>三级树形菜单</title>
<style>
.menu-item {
cursor: pointer;
}
.submenu {
display: none;
margin-left: 20px;
}
</style>
</head>
<body>
<div id="menu"></div>
<script>
const menuData = [
{
name: '菜单1',
children: [
{
name: '子菜单1-1',
children: [
{ name: '子菜单1-1-1' },
{ name: '子菜单1-1-2' }
]
},
{ name: '子菜单1-2' }
]
},
{
name: '菜单2',
children: [
{ name: '子菜单2-1' },
{
name: '子菜单2-2',
children: [
{ name: '子菜单2-2-1' }
]
}
]
}
];
function createMenu(data, parentElement) {
data.forEach(item => {
const div = document.createElement('div');
div.className = 'menu-item';
div.textContent = item.name;
parentElement.appendChild(div);
if (item.children) {
const submenu = document.createElement('div');
submenu.className = 'submenu';
parentElement.appendChild(submenu);
createMenu(item.children, submenu);
div.addEventListener('click', (e) => {
e.stopPropagation();
submenu.style.display = submenu.style.display === 'none' ? 'block' : 'none';
});
}
});
}
const menuContainer = document.getElementById('menu');
createMenu(menuData, menuContainer);
</script>
</body>
</html>
领取专属 10元无门槛券
手把手带您无忧上云