javascript - 纯 JavaScript |将类添加到 <li> 元素

标签 javascript html arrays

我正在尝试为 <li> 添加类点击事件上的元素。如果我单击第一个元素,它应该获得类“current-tab”和其他<li>元素不应包含该类等。 下面是一些 HTML 代码:

<nav class="interest-nav">
  <ul id="interest-ul">
     <li><a href="#box1">Fashion</a></li>
     <li><a href="#box2">Movies</a></li>
     <li><a href="#box3">TV</a></li>
  </ul>
</nav>

和 JavaScript 代码:

var navUl = document.getElementById('interest-ul').getElementsByTagName('li');
for (var y = 0; y < navUl.length; y++) {
    navUl[y].addEventListener('click', checkLi);
}

function checkLi() {
    if (navUl.className === '') {
        navUl.className = 'current-tab';
    } else {
        navUl.className = '';
    }
}

感谢您的关注和帮助!

最佳答案

您正在尝试在数组上设置类。您可以通过向列表本身添加事件监听器来简化此脚本,然后使用事件目标。

var navUl = document.getElementById( 'interest-ul' );
navUl.addEventListener( 'click', checkLi );

function checkLi( event ) {
  // Just for testing... remove the following line:
  console.log( 'clicked on', event.target.tagName );
  // Only apply our actions if we really clicked on the link.
  if ( event.target.tagName === 'A' ) {
    navUl.querySelectorAll( 'li' ).forEach( el => el.classList.remove( 'current-tab' ) );
    event.target.parentNode.classList.add( 'current-tab' );
  }
}
.current-tab {
  font-weight: bold;
}
<nav class="interest-nav">
  <ul id="interest-ul">
    <li><a href="#box1">Fashion</a></li>
    <li><a href="#box2">Movies</a></li>
    <li><a href="#box3">TV</a></li>
  </ul>
</nav>

关于javascript - 纯 JavaScript |将类添加到 <li> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55046278/

相关文章:

javascript - Selenium javascript 近似值

javascript - 如何禁用 jquery 选项卡中的显示效果?

jquery - 在移动设备上禁用垂直滚动(但不是水平滚动)

c# - F# 分配给重载的 C# 属性

javascript - 如何从变量 url 中选择元素标签到 jquery load() 函数

html - 处理多个后代选择器的最有效方法?

jquery - 添加和删​​除类 jQuery

arrays - Julia,将 2d 数组合并到 3d 数组上?

java - 如何填充 100,000,000 个元素的数组?

java - 在 Java 中使用 javascript API