クリックするたびにナビゲーションクラスのメニューアイテムにCSSクラスを追加したいと思うので、 )。私は、.menu-itemクラスをループし、ループを使って新しいCSSクラスを追加/削除する必要があることを知っていますが、ボールを再生することはできません。クリックイベントを使用して個々のループアイテムにクラスを追加および削除する
私は、thisItem変数がtrueまたはfalseに設定されているかどうかに依存して、.menu-itemをthisオブジェクトにして、ブール値を使用してCSSクラスを追加または削除する必要があると思います。
私はこれを再生することはできないようですが、私は正しい方法でイベントリスナーを使用していると100%確信していません。
ご協力いただければ幸いです。
codepen:https://codepen.io/emilychews/pen/eeKPoo?editors=1010
JS
var navlinks = document.getElementsByClassName('menu-item')
var currentItem = false;
for (i = 0; i<navlinks.length; i+=1) {
function addCurrentItemToMenu() {
if (currentItem === false) {
navlinks = this
this.classList.add('current-item')
currentItem = true
} else {
this.classList.remove('current-item')
currentItem = false
}
}
}
navlinks.addEventListener("click", function(){
addCurrentItemToMenu()
}, false)
CSS
body, ul {padding: 0; margin: 0}
#main-header {width: 100%; height: 100px;}
#mobile-menu-button {display: none;}
#main-navigation {
position: relative;
width: 100%;
height: 100px;
background: red;
display: flex;
justify-content: space-between;
box-sizing: border-box;
padding: 10px 5% 10px 5%;
align-items: center;
}
ul#nav-menu-items {
display: flex;
margin-left: auto;
}
#main-navigation ul li {list-style-type: none;}
ul#nav-menu-items li a {
padding: 10px 15px;
margin: 0 5px;
box-sizing: border-box;
background: yellow;
text-decoration: none;
color:#000;
}
#main-navigation ul#nav-menu-items li a:hover {
color:blue;
transition: color .25s;
}
HTMLここ
<header id="main-header">
<nav id="main-navigation">
<ul id="nav-menu-items">
<li class="menu-item"><a href="https://www.google.com">News</a></li>
<li class="menu-item"><a href="https://www.google.com">About</a></li>
<li class="menu-item"><a href="https://www.google.com">Contact</a></li>
</ul>
</nav>
</header>
動作しません - それは唯一の追加は、最初のナビゲーションリンクのクラスです。リンクがクリックされると、そのリンクにクラスが追加され、他のリンクからクラスが削除されます。また、私はループではなく、forEachでそれを行う必要があります。試してくれてありがとう。 –
それはまさにあなたの言うことを行い、他者からのリンクを削除し、 'forEach'でクリックされたリンクを追加しますが、' for'ループで動作するように簡単に書き換えることができます。 –
@ TheChewy私のコードを確認してください、それは述べたように働いています。 –