GLOW YOUR BUSINESS
WEB TOTAL PRODCTION FROM NARA

JavaScriptのchildrenで特定の子要素を取得する方法

JavaScirptを使ってリストの特定の子要素を取得したいんだけどどうしたらいいの?

本記事では上記のような疑問を解決します

例えばメニューの中の特定の要素だけドロップダウンメニューにする時に「特定の要素だけを取得したい」場合などがあります。

そういった時に使える取得方法ですので是非ご覧ください。

この記事を書いている人

こんにちは、しのです。

この記事は現役フロントエンドエンジニアである自身の経験を基に書いております。

実務でJavaScriptを使用しているため、信頼性の担保になると考えております。

こんな方にオススメです

ドロップダウンメニュー作ってるけど子要素の取得方法がいまいちわからないなあ

firstElementChildとかlastElementChildとかもう意味わかんないよ、、、

上記のようなお悩みを解決する記事となっております。

特定の要素を取得する方法

では早速見ていきましょう。

<HTML>



HTMLは一般的なulとliタグを用意しています。



ulの子要素を取得する為にulにidを付けています。

<ul id="list">
  <li>list1</li>
    <li>list2</li>
    <li>list3</li>
    <li>list4</li>
    <li>list5</li>
</ul>

<JavaScirpt>



listという変数にHTMLでlistというid破ったulタグを取得して代入しています。



その後、list.children[2]で3番目のliタグを取得できます。

let list =document.getElementById('list');

//特定の要素を取得する場合はelement.children[]とすれば取得できる
console.log(list.children[2]);

<実行結果>

<li>list3</li>



上記の通り、特定の要素を取得する場合はelement.children[]とすれば取得できます。 

ちなみに[]というタグの場合は配列なので1番目の要素は[0]、2番目の要素は[1]で取得する形になるのでご注意下さい。

childrenプロパティとは

ParentNode の children プロパティは、呼び出された際のノードの子要素ノードをすべて含んだ動的な(生きている) HTMLCollection を返す、読み取り専用プロパティです。

出典元:MDN


[st-kaiwa1 r]

このchildrenプロパティを使えばリストのどの部分でも要素を自由に取得する事が出来ますね。

[/st-kaiwa1]

最初と最後の要素を取得する場合は?


では最初と最後の要素を取得する場合はどうすればよいでしょうか。

<最初と最後の要素を取得する場合>

let list=document.getElementById('list');
firstList=list.firstElementChild;

console.log(firstList);

let list=document.getElementById('list');
lastList=list.lastElementChild;

console.log(firstList);

<結果>

<li>list1</li>

<li>list5</li>


firstElementChildというメソッドでlistという変数(つまりul)の最初の子要素、つまりはlist1を取得しています。



同じくlastElementChildで最後の子要素を取得するという形になります。

メニューやリストを操作する時に必要なメソッドなので是非使ってみてくださいね。



それでは本日は以上となります。

いつもお読み頂きありがとうございます。



おしまい。

著者画像

執筆者 しの

still.代表。 奈良市出身奈良市在住。 SEOはじめ、マーケティング成果を出せるWEB制作を得意としています。ディレクションから制作まで一気通貫でご対応。 クライアント様にとってスムーズで気持ちの良いコミュニケーションを常日頃から心がけております。 これまでコーポレイトサイト、サービスサイト、ランディングページ、ECサイトなど多数のサイト、プロジェクトに携わらせていただき、サイトを作成させて頂いております。 その他サーバーの構築、メールのトラブルの対応、コンテンツマーケティングなど幅広くご対応しておりますのでまずはお気軽にご相談ください。