【问题标题】:How to make a tab active when clicked by using pure JS使用纯JS单击时如何使选项卡处于活动状态
【发布时间】:2022-01-05 15:29:32
【问题描述】:

我正在处理下面的导航栏

<nav class="nav" >
        <ul class="nav__list">
            <li id="authors-tag" class="nav__list__item"><a class="nav__list__item__link" href="#">Authors</a></li>
            <li id="publishers-tag" class="nav__list__item"><a class="nav__list__item__link" href="#">Publishers</a></li>
            <li id="books-tag" class="nav__list__item"><a class="nav__list__item__link" href="#">Books</a></li>
        </ul>
    </nav>

通过使用纯 JS,我试图为导航栏的每个选项卡添加一个事件侦听器,这样当用户单击一个 li 项目时,该选项卡将通过向该 DOM 元素添加一个修饰符类来激活突出显示它。

到目前为止,我找到的每个答案都是使用 jQuery。

下面是我的 main.js

const tabs = document.querySelectorAll('.nav__list__item__link');
tabs.forEach(clickedTab =>{
  clickedTab.addEventListener('click', () => {
    tabs.forEach( tab => {
      tab.classList.remove('active');
    });
    e.target.classList.add('.active');
  });
});

我也尝试过通过 id 使用 getAttribute,但我似乎无法确定它。

提前致谢。

【问题讨论】:

  • .classList.add()中删除active之前的点!

标签: javascript html ecmascript-6 modifier


【解决方案1】:

只需从e.target.classList.add('.active'); 中删除.,例如e.target.classList.add('active');.

const tabs = document.querySelectorAll('.nav__list__item__link');
tabs.forEach(clickedTab =>{
  clickedTab.addEventListener('click', () => {
    tabs.forEach( tab => {
      tab.classList.remove('active');
    });
    e.target.classList.add('active');
  });
});

【讨论】:

  • 如果您能解释一下为什么删除点可以解决问题,那就太好了。
  • classList.addclassList.remove 中不需要点。
  • 虽然这是一个正确的答案,但 SO 不鼓励拼写问题(它们无法被搜索,并且对 OP 以外的任何人都没有任何价值)。因此,将来您不应该回答它们;发表评论并将问题标记为关闭。
猜你喜欢
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
  • 2011-12-22
  • 2020-01-19
  • 1970-01-01
相关资源
最近更新 更多