2016-12-11 11 views
2

リンクが多数あるページがありますが、jsを使用してnavタグ内のすべてのリンクを選択し、それらをnavigationLinksという変数に割り当てたいとします。すべてのリンクにクラスを割り当てないでこれを行う方法はありますか?ここでは `nav要素内のすべてのリンクを選択する方法

<nav> 
    <ul> 
     <li><a href="index.html" class="selected">Portfolio</a></li> 
     <li><a href="about.html">About</a></li> 
     <li><a href="contact.html">Contact</a></li> 
    </ul> 

JSです:

let navigationLinks = document.getElementsByTagName('nav'); 

ありがとうございました。

+0

あなたはそれのHTMLを制御を持っていますかループする必要があるかもしれない複数のnavタグを持っている場合は?もしそうなら、idやクラスをnavに追加して.children()を使うことができます。メソッド(https://api.jquery.com/children/)あなたはIDなしでそれを行うこともできますし、タグをつかむだけです。しかし、あなたのページに別のnav要素を置くと、面倒になる可能性があります。 htmlを管理している場合、どのメソッドを使用していても、タグを参照するのではなく、IDまたはクラスを使用することをお勧めします。 – DawnPatrol

+0

navigationLinks.getElementsByTagName( 'a'); – fingerpich

答えて

4
let navigationLinks = document.querySelectorAll('nav a'); 

しかし、それはNodeListオブジェクトです。

+0

ありがとうKubaJastrz。これは、別のクラスを追加することなく動作しました。 – martinbshp

0

あなたの与えられたJavaScript:

let navigationLinks = document.getElementsByTagName('nav'); 

は、第1のナビゲーション要素を選択するために、document.getElementsByTagName('nav')[0]を使用し、間違っています。

使用このコードは、あなたがこれを必要に応じて、nav

let navigationLinks = document.getElementsByTagName('nav')[0]; 
 
let button = document.getElementsByTagName('button')[0]; 
 

 
var ul = navigationLinks.children[0]; 
 
var ulChilds = ul.children; 
 
function insertClass() { 
 
    for (var x=0;x < ulChilds.length;x++) { 
 
     ulChilds[x].className += ' my-class'; 
 
    } 
 
} 
 
button.onclick = insertClass;
.my-class { 
 
    background: yellow; /*Just testing class*/ 
 
}
<nav> 
 
    <ul> 
 
     <li><a href="index.html" class="selected">Portfolio</a></li> 
 
     <li><a href="about.html">About</a></li> 
 
     <li><a href="contact.html">Contact</a></li> 
 
    </ul> 
 
</nav> 
 
<button>Add my-class</button>

・ホープ内のすべての<a>リンクにクラスmy-classを割り当てます。

0
let navElement = document.getElementsByTagName('NAV'); 

let navigationLinks = navElement[0].getElementsByTagName('A'); 

あなたはそれに応じて

関連する問題