You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Accordion组件一次仅展开一个面板?

实现单面板展开的Accordion折叠功能

解决方案

要实现一次仅展开一个折叠面板,核心逻辑是点击任意面板时,先关闭所有已展开的其他面板,再处理当前面板的状态。替换你的JavaScript代码如下:

const accordians = document.getElementsByClassName("accordion_btn");
for (var i = 0; i < accordians.length; i += 1) {
  accordians[i].onclick = function() {
    // 重置所有面板的状态:关闭内容、移除箭头样式
    const allContents = document.querySelectorAll('.accordion_content');
    const allBtns = document.querySelectorAll('.accordion_btn');
    
    allContents.forEach(content => content.style.maxHeight = null);
    allBtns.forEach(btn => btn.classList.remove('arrowClass'));
    
    // 处理当前面板
    const currentContent = this.nextElementSibling;
    if (!currentContent.style.maxHeight) {
      this.classList.add('arrowClass');
      currentContent.style.maxHeight = currentContent.scrollHeight + "px";
    }
  }
}

代码说明

  • 全局重置:点击按钮时,先遍历所有折叠内容和按钮,统一关闭所有面板并恢复箭头样式,确保没有遗留的展开状态。
  • 当前面板处理:判断当前面板是否处于关闭状态,若是则添加箭头样式并设置内容高度,完成展开操作;如果当前面板原本是展开的,全局重置已经将其关闭,无需额外处理。
  • 你的CSS和HTML代码无需修改,直接替换JS部分即可实现单面板展开的效果。

内容的提问来源于stack exchange,提问作者Matrion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:19:01