简体   繁体   English

带有纯 javascript 的手风琴 - 扩展组不跟随

[英]Accordion with pure javascript - expanding does not follow by group

I am trying to create an accordian and only expand by group during onclick function.我正在尝试创建一个手风琴,并且仅在 onclick function 期间按组扩展。 So when click on Level 2(1), only div for Level 3(1) is allowed be to expanded.所以当点击Level 2(1)时,只允许展开Level 3(1)的div。 You may take a look at my snippet for clearer understanding.您可以查看我的代码片段以获得更清晰的理解。 Currently it only worked on Level 2(1).目前它仅适用于 2(1) 级。

This is the flow I want:这是我想要的流程:

Click Main Level - Show all the Level 2单击主级别 - 显示所有级别 2

Click Level 2(1) - Show all Level 3(1) (if any)单击 Level 2(1) - 显示所有 Level 3(1)(如果有)

Click Level 2(2) - Show all Level 3(2) (if any) and etc....单击 Level 2(2) - 显示所有 Level 3(2)(如果有)等......

This is what I want for the output:这就是我想要的 output:

这就是我要的:

 function toggle(item) { item.classList.toggle("active"); let panel = item.nextElementSibling; if (panel.== null) { if (panel.style.display === "block") { panel.style;display = "none". } else { panel.style;display = "block"; } } return false; }
 .accordion, .subpanel-accordion { background-color: #eee; color: #444; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px; transition: 0.4s; display: flex; }.active, .accordion:hover { background-color: #ccc; }.panelaccordion { padding: 0 18px; display: none; background-color: white; overflow: hidden; }.text-accordion { display: flex; align-items: center; justify-content: flex-start; flex: 50%; }.button-accordion { display: flex; align-items: center; justify-content: flex-end; flex: 50%; }
 <div class="accordion" id="main-1" onclick="toggle(this);">Level 1</div> <div class="panelaccordion level2"> <div class="accordion" id="sub-1" onclick="toggle(this);"> <div class="text-accordion">Level 2(1)</div> <div class="button-accordion" onclick="getid(\'sub-1\');">Click level 2(1)</div> </div> <div class="subpanel-accordion" id="subpanel-1"> <div class="text-accordion">Level 3(1)</div> <div class="button-accordion" onclick="getidsub(\'subpanel-1\');">Click level 3(1)</div> </div> <div class="accordion" id="sub-2"> <div class="text-accordion">Level 2(2)</div> <div class="button-accordion" onclick="getid(\'sub-2\');">Click level 2(2)</div> </div> <div class="subpanel-accordion" id="subpanel-2"> <div class="text-accordion">Level 3(2)</div> <div class="button-accordion" onclick="getidsub(\'subpanel-2\');">Click level 3(2)</div> </div> <div class="accordion" id="sub-3"> <div class="text-accordion">Level 2(3)</div> <div class="button-accordion" onclick="getid(\'sub-2\');">Click level 2(3)</div> </div> </div>

You can use HTML details tag for accordions.您可以为手风琴使用 HTML details标签。 I'm adding a small example repl我正在添加一个小示例repl

MDN HTML details Tag MDN HTML 详细信息标签

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM