当前布局为左边是一个ul列表 右边是一个大的页面 这个页面又分为上下两个部分 当我们点击左边ul列表中的某个li时 右边页面的上部分展示这个li中的具体内容 在这个li的具体内容中又嵌套了一个ul列表 当点击其中的li时 当前页面的右下部分展示其具体内容 代码详细实现
时间: 2024-02-17 11:02:01 浏览: 151
您可以使用以下 HTML、CSS 和 JavaScript 代码来实现您的需求:
HTML 代码:
```
<div class="container">
<div class="left-column">
<ul id="left-list">
<li data-id="1">List Item 1</li>
<li data-id="2">List Item 2</li>
<li data-id="3">List Item 3</li>
<li data-id="4">List Item 4</li>
</ul>
</div>
<div class="right-column">
<div class="top-section">
<h2 id="top-section-title">Top Section</h2>
<div id="top-section-content"></div>
</div>
<div class="bottom-section">
<h2 id="bottom-section-title">Bottom Section</h2>
<div id="bottom-section-content"></div>
</div>
</div>
</div>
```
CSS 代码:
```
.container {
display: flex;
}
.left-column {
width: 200px;
border: 1px solid #ccc;
padding: 10px;
}
.right-column {
flex: 1;
padding: 10px;
}
.top-section {
border: 1px solid #ccc;
padding: 10px;
margin-bottom: 20px;
}
.bottom-section {
border: 1px solid #ccc;
padding: 10px;
}
```
JavaScript 代码:
```
// 获取左侧列表和右侧上下部分的 DOM 元素
var leftList = document.getElementById('left-list');
var topSectionTitle = document.getElementById('top-section-title');
var topSectionContent = document.getElementById('top-section-content');
var bottomSectionTitle = document.getElementById('bottom-section-title');
var bottomSectionContent = document.getElementById('bottom-section-content');
// 定义一个函数,用于获取指定 id 的列表项的详细内容
function getListItemContent(id) {
// 这里假设你有一个包含所有列表项的对象数组,每个对象包含 id、title 和 content 三个属性
var items = [
{
id: 1,
title: 'List Item 1',
content: '<ul><li>Subitem 1</li><li>Subitem 2</li><li>Subitem 3</li></ul>'
},
{
id: 2,
title: 'List Item 2',
content: '<ul><li>Subitem 4</li><li>Subitem 5</li><li>Subitem 6</li></ul>'
},
{
id: 3,
title: 'List Item 3',
content: '<ul><li>Subitem 7</li><li>Subitem 8</li><li>Subitem 9</li></ul>'
},
{
id: 4,
title: 'List Item 4',
content: '<ul><li>Subitem 10</li><li>Subitem 11</li><li>Subitem 12</li></ul>'
}
];
// 在 items 数组中查找指定 id 的对象
var item = items.find(function(item) {
return item.id === id;
});
// 如果找到了指定的对象,则返回该对象的 content 属性;否则返回一个空字符串
return item ? item.content : '';
}
// 给左侧列表绑定点击事件处理函数
leftList.addEventListener('click', function(event) {
// 如果点击的是列表项,则更新右侧上下部分的内容
if (event.target.tagName === 'LI') {
// 获取点击的列表项的 id
var id = parseInt(event.target.getAttribute('data-id'));
// 更新右侧上部分的标题和内容
topSectionTitle.innerText = event.target.innerText;
topSectionContent.innerHTML = getListItemContent(id);
// 清空右侧下部分的标题和内容
bottomSectionTitle.innerText = '';
bottomSectionContent.innerHTML = '';
}
event.preventDefault();
});
// 给右侧上部分绑定点击事件处理函数
topSectionContent.addEventListener('click', function(event) {
// 如果点击的是子列表项,则更新右侧下部分的内容
if (event.target.tagName === 'LI') {
// 获取点击的子列表项的内容
var content = event.target.innerText;
// 更新右侧下部分的标题和内容
bottomSectionTitle.innerText = 'Subitem';
bottomSectionContent.innerText = content;
}
event.preventDefault();
});
```
这段代码将创建一个包含左侧列表和右侧上下两个部分的页面布局。当用户点击左侧列表中的某个列表项时,右侧上部分将显示该列表项的标题和详细内容,并且该详细内容中还包含一个嵌套的子列表。当用户点击该子列表中的某个子列表项时,右侧下部分将显示该子列表项的内容。
阅读全文