JS代码实现:3个面板,展开有数据的一个,若都有数据,则按照先后顺序,展开前一个
时间: 2023-11-01 08:07:34 浏览: 28
以下是一个简单的JS代码实现,实现了3个面板的展开和关闭功能。当多个面板都有数据时,展开前一个面板。
HTML代码:
```
<div class="panel">
<div class="panel-header" onclick="togglePanel(1)">面板1</div>
<div class="panel-body" id="panel1">
<p>面板1的内容</p>
</div>
</div>
<div class="panel">
<div class="panel-header" onclick="togglePanel(2)">面板2</div>
<div class="panel-body" id="panel2">
<p>面板2的内容</p>
</div>
</div>
<div class="panel">
<div class="panel-header" onclick="togglePanel(3)">面板3</div>
<div class="panel-body" id="panel3">
<p>面板3的内容</p>
</div>
</div>
```
CSS代码:
```
.panel {
width: 200px;
border: 1px solid #ccc;
margin-bottom: 10px;
}
.panel-header {
background-color: #f5f5f5;
padding: 10px;
cursor: pointer;
}
.panel-body {
display: none;
padding: 10px;
}
```
JavaScript代码:
```
function togglePanel(panelIndex) {
var panel = document.getElementById("panel" + panelIndex);
var panels = document.getElementsByClassName("panel-body");
var panelCount = panels.length;
var prevPanel;
// 查找前一个有数据的面板
for (var i = panelIndex - 1; i > 0; i--) {
if (document.getElementById("panel" + i).innerHTML !== "") {
prevPanel = document.getElementById("panel" + i);
break;
}
}
// 如果都有数据,则展开前一个面板
if (prevPanel && panel.innerHTML !== "") {
prevPanel.style.display = "block";
panel.style.display = "none";
} else {
// 否则,展开当前面板
if (panel.style.display === "none") {
// 隐藏其他面板
for (var i = 0; i < panelCount; i++) {
if (panels[i] !== panel) {
panels[i].style.display = "none";
}
}
panel.style.display = "block";
} else {
panel.style.display = "none";
}
}
}
```
这段代码实现了对三个面板的点击展开和关闭功能,同时还实现了当多个面板都有数据时,展开前一个面板的逻辑。