2016-08-19 6 views
0

thirdNavFunctionのループの中で、クリックしたクラス以外のすべての.third-navクラスをターゲットにする必要があります。これはjQueryなしで行う必要があります。ここでのコードではクリック以外のすべての特定の要素をターゲットにする

var thirdNav = document.getElementsByClassName("third-nav"); 


for (var i = 0; i < thirdNav.length; i++){ 
    thirdNav[i].addEventListener("click", thirdNavFuntion); 
} 

function thirdNavFuntion() { 

    for (i = 0; i < thirdNav.length; i++) { 
    thirdNav[i].parentElement.className = ""; 
    } 

    if (this.parentElement.className === "") { 
    this.parentElement.className = "nav-sub-li-active"; 
    } else { 
    this.parentElement.className = ""; 
    } 
} 

、私はすべての.third-nav divをターゲットが、意図したとおりそれは動作しません、私がクリックされたものを除外する必要があります。それが理にかなってほしい。

+0

あなたはここでエラーが何を得ているのですか? –

+0

エラーはありません。それは意図された結果ではありませんが、提供された回答が私の問題を完全に解決しました。私はそれが可能になるとすぐにそれを解決としてマークします。 – madsjorg

答えて

0
  • thirdNavArray.from()を使用して配列に変換します。
  • filter()メソッドを使用して、クリックした要素を除外します。
  • forEachメソッドを呼び出して、すべての親要素のクラス名を変更します。
function thirdNavFuntion() { 
    const elements = Array.from(thirdNav).filter(el => el !== this) 
    elements.forEach(el => el.parentElement.className = "") 
} 
関連する問題