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

如何通过锚点链接自动打开对应手风琴面板

解决方法

你只需要在原有JS逻辑的基础上,补充页面初始加载和锚点变化的监听逻辑,即可实现锚点跳转时自动触发对应手风琴面板展开的效果,补充后的完整代码如下:

var acc = document.getElementsByClassName("accordion");
var i;

for (i = 0; i < acc.length; i++) {
  acc[i].addEventListener("click", function() {
    /* 切换active类,标记当前控制面板的按钮状态 */
    this.classList.toggle("active");

    /* 切换面板的显示/隐藏状态 */
    var panel = this.nextElementSibling;
    if (panel.style.display === "block") {
      panel.style.display = "none";
    } else {
      panel.style.display = "block";
    }
  });
}

// 页面加载完成后,如果URL携带锚点,自动打开对应面板
window.addEventListener('load', function() {
  if (location.hash) {
    const targetAccordion = document.querySelector(location.hash);
    // 验证锚点对应元素是手风琴按钮且未展开时,触发点击
    if (targetAccordion && targetAccordion.classList.contains('accordion') && !targetAccordion.classList.contains('active')) {
      targetAccordion.click();
    }
  }
});

// 监听锚点变化事件,点击锚点链接时触发对应面板展开
window.addEventListener('hashchange', function() {
  if (location.hash) {
    const targetAccordion = document.querySelector(location.hash);
    if (targetAccordion && targetAccordion.classList.contains('accordion') && !targetAccordion.classList.contains('active')) {
      targetAccordion.click();
    }
  }
});

逻辑说明

  • 保留了你原来的手风琴点击交互逻辑,所有交互规则和之前完全一致
  • 新增页面加载监听:如果用户直接访问带锚点的链接,进入页面后会自动展开对应面板
  • 新增锚点变化监听:点击页面内的锚点链接时,会自动判断锚点对应元素是否为手风琴按钮,未展开时触发点击展开
  • 逻辑兼容普通锚点跳转,如果锚点对应的元素不是手风琴按钮,不会做额外处理,不影响页面其他锚点的正常使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:36:00