概要:このチュートリアルでは、指定された要素の最初の子要素、最後の子要素、およびすべての子要素を取得する方法を学びます。
次のHTMLフラグメントがあると仮定します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Get Child Elements</title>
</head>
<body>
<ul id="menu">
<li class="first">Home</li>
<li>Products</li>
<li class="current">Customer Support</li>
<li>Careers</li>
<li>Investors</li>
<li>News</li>
<li class="last">About Us</li>
</ul>
</body>
</html>
Code language: HTML, XML (xml)
最初の子要素を取得する
指定された要素の最初の子要素を取得するには、要素のfirstChild
プロパティを使用します。
let firstChild = parentElement.firstChild;
Code language: JavaScript (javascript)
parentElement
に子要素がない場合、firstChild
はnull
を返します。
firstChild
プロパティは、要素ノード、テキストノード、コメントノードなど、任意のノードタイプの子ノードを返します。
次のスクリプトは、#menu
要素の最初の子要素を示しています。
let content = document.getElementById('menu');
let firstChild = content.firstChild.nodeName;
console.log(firstChild);
Code language: JavaScript (javascript)
出力
#text
Code language: CSS (css)
コンソールウィンドウには#text
と表示されます。これは、開始タグ<ul>
と<li>
タグ間の空白を維持するためにテキストノードが挿入されるためです。この空白によって#text
ノードが作成されます。
単一のスペース、複数のスペース、改行、タブなどの空白は、#text
ノードを作成することに注意してください。 #text
ノードを削除するには、次のように空白を削除できます。
<article id="content"><h2>Heading</h2><p>First paragraph</p></article>
Code language: HTML, XML (xml)
または、要素ノードのみを持つ最初の子を取得するには、firstElementChild
プロパティを使用できます。
let firstElementChild = parentElement.firstElementChild;
Code language: JavaScript (javascript)
次のコードは、メニューの最初の子要素である最初のリスト項目を返します。
let content = document.getElementById('menu');
console.log(content.firstElementChild);
Code language: JavaScript (javascript)
出力
<li class="first">Home</li>
Code language: HTML, XML (xml)
この例では
- まず、
getElementById()
メソッドを使用して、#menu
要素を選択します。 - 次に、
firstElementChild
プロパティを使用して、最初の子要素を取得します。
最後の子要素を取得する
ノードの最後の子要素を取得するには、lastChild
プロパティを使用します。
let lastChild = parentElement.lastChild;
Code language: JavaScript (javascript)
parentElement
に子要素がない場合、lastChild
はnull
を返します。
lastChild
プロパティは、最後の要素ノード、テキストノード、またはコメントノードを返します。要素ノードタイプを持つ最後の子要素のみを選択する場合は、lastElementChild
プロパティを使用します。
let lastChild = parentElement.lastElementChild;
Code language: JavaScript (javascript)
次のコードは、メニューの最後の子要素であるリスト項目を返します。
let menu = document.getElementById('menu');
console.log(main.lastElementChild);
Code language: JavaScript (javascript)
出力
<li class="last">About Us</li>
Code language: HTML, XML (xml)
すべての子要素を取得する
指定された要素の子要素のライブNodeList
を取得するには、childNodes
プロパティを使用します。
let children = parentElement.childNodes;
Code language: JavaScript (javascript)
childNodes
プロパティは、すべてのノードタイプの子要素を返します。要素ノードタイプのみを持つ子要素を取得するには、children
プロパティを使用します。
let children = parentElement.children;
Code language: JavaScript (javascript)
次の例では、IDがmain
の要素のすべての子要素を選択します。
let menu = document.getElementById('menu');
let children = menu.children;
console.log(children);
Code language: JavaScript (javascript)
出力

概要
firstChild
とlastChild
は、ノードの最初と最後の子を返します。これらは、テキストノード、コメントノード、要素ノードなど、任意のノードタイプにすることができます。firstElementChild
とlastElementChild
は、最初と最後の要素ノードの子を返します。childNodes
は、指定されたノードの任意のノードタイプのすべての子ノードのライブNodeList
を返します。children
は、指定されたノードのすべての子Element
ノードを返します。