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

如何为当前选中元素添加aria-current属性并移除其他元素该属性

实现点击导航项时切换aria-current属性

核心逻辑

在切换active类的同步流程里处理无障碍属性:

  1. 先清除所有导航项的aria-current属性
  2. 给当前点击的导航项添加aria-current="page"属性

修改后的完整代码

JavaScript

document.addEventListener('DOMContentLoaded', function() {
  const selector = '.nav__link';
  const elems = Array.from( document.querySelectorAll( selector ) );
  const navigation = document.querySelector( 'nav' );

  function makeActive( evt ) {
    const target = evt.target;
    
    if ( !target || !target.matches( selector ) ) {
      return;
    }
    
    // 移除所有元素的active类和aria-current属性
    elems.forEach( elem => {
      elem.classList.remove( 'active' );
      elem.removeAttribute('aria-current');
    });
    // 给当前选中元素添加active类和aria-current属性
    target.classList.add( 'active' );
    target.setAttribute('aria-current', 'page');
  };

  navigation.addEventListener( 'mousedown', makeActive );
});

CSS

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

*::before, *::after {
    box-sizing: border-box;
}

.container {
  width: 100%;
  max-width: 1024px;
  display: block;
  margin: 30px auto;
}

ul {
  list-style: none;
}

a {
  text-decoration: none;
}

.nav {
  display: flex;
  flex-direction: row;
  justify-content: space-around;
  align-items: center;
}


.nav__item {
  padding: 1rem;
}

.nav__link {
  display: block;
  padding: .3125rem 1.5rem;
  text-transform: uppercase;
}

.nav__link.active  {
  border: 1px solid #ff4b4c;
  color: #ff4b4c;
}

HTML

<div class="container">
  <nav>
    <ul class="nav">
      <li class="nav__item"><a class="nav__link active" href="#" aria-current="page">当前页面</a></li>
      <li class="nav__item"><a class="nav__link" href="#">页面1</a></li>
      <li class="nav__item"><a class="nav__link" href="#">页面2</a></li>
      <li class="nav__item"><a class="nav__link" href="#">页面3</a></li>
    </ul>
  </nav>
</div>

关键修改说明

  • 在遍历清除所有元素active类的循环中,新增elem.removeAttribute('aria-current'),统一移除所有导航项的无障碍标记
  • 在给当前元素添加active类后,调用target.setAttribute('aria-current', 'page'),为选中元素添加上符合无障碍规范的属性

内容的提问来源于stack exchange,提问作者Gabriele C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:40:30