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

如何在URL哈希匹配指定div类名时为其自动添加active类

实现方案

原有代码问题

  • document.querySelector(".panel")只会匹配页面第一个类为panel的元素,所以始终只能给第一个面板添加active类
  • 硬编码判断#red的逻辑不通用,无法适配其他哈希值的场景

通用原生JS实现代码

// 等待DOM结构完全加载后再执行逻辑,避免找不到面板元素
document.addEventListener('DOMContentLoaded', function() {
  // 提取哈希值并去掉开头的#,无哈希时得到空字符串
  const targetPanelClass = window.location.hash.slice(1)
  // 哈希值非空才执行匹配逻辑
  if (!targetPanelClass) return

  // 直接匹配同时携带panel类和目标哈希类的面板元素
  const targetPanel = document.querySelector(`.panel.${targetPanelClass}`)
  // 找到对应元素再添加active类,避免不存在元素时报错
  if (targetPanel) {
    targetPanel.classList.add('active')
  }
})

可选增强功能(哈希变化自动切换)

如果需要支持用户修改地址栏哈希后自动切换激活的面板,可以新增哈希变化监听逻辑:

window.addEventListener('hashchange', function() {
  // 先清空所有已有active状态的面板
  document.querySelectorAll('.panel.active').forEach(item => {
    item.classList.remove('active')
  })
  const targetPanelClass = window.location.hash.slice(1)
  if (!targetPanelClass) return

  const targetPanel = document.querySelector(`.panel.${targetPanelClass}`)
  if (targetPanel) {
    targetPanel.classList.add('active')
  }
})

提示:如果你的面板类名包含特殊字符,需要先对哈希值做转义处理,常规英文、数字、短横线、下划线组成的类名无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:54:04