###前提・実現したいこと
現在地を取得してマッチしたURLを持ったローカルナビのリストにクラスを付与したい。
1 現在のURLを取得。
2 #localNavの中のa要素のhref属性に、1で取得したURLと同一の物を探す。
3 マッチした要素があったら、そのURLを持つ親のliにクラスcurrentを付与する。
ちなみに現在のjsコードは中途半端ですが、a要素href属性に、現在のURLとマッチする物があったらliにクラスを付与する(全部)となっています。
###発生している問題・エラーメッセージ
現在URLとローカルナビ内のhrefの取得までうまくいったのと思うのですが、
マッチしたhrefが見つかった場合のliへのクラス処理の方法がわかりません。
###該当のソースコード
<ul id="localNav"> <li><a href="/aaaa/bbbbbbbbbb/index.html">テキスト</a></li> <li><a href="/aaaa/bbbbbbbbbb/ccc01.html">テキスト</a></li> <li><a href="/aaaa/bbbbbbbbbb/ccc02.html">テキスト</a></li> <li><a href="/aaaa/bbbbbbbbbb/ccc03.html">テキスト</a></li> <li><a href="/aaaa/bbbbbbbbbb/ccc04.html">テキスト</a></li> <li><a href="/aaaa/bbbbbbbbbb/ccc/index.html">テキスト</a></li> </ul> <script> var nav = document.getElementById('localNav'), child = nav.getElementsByTagName('a'), path = location.pathname.slice(16); // 現在のパス16番目以降取得 for(var i = 0; i < child.length; i++){ var href = child[i].getAttribute('href').slice(16); //a要素のhrefのURL16番目以降を配列で取得 if(href === path){ for(var j = 0; j < nav.children.length; j++){ nav.children[j].classList.add('current'); } }else{ } } </script>
###試したこと
href自体は配列で取得されているはずなので、マッチした配列番号に対してクラスを振るなど考えましたが、そもそも配列番号を取得する方法がわかりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
.slice()でURLを取得していますが、下2階層のURL取得方法でいい方法があれば教えてください。
こういう書き方の方が良いなどあれば大歓迎です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/10/20 00:05