言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. HTML要素.children / firstElementChild / lastElementChild

HTML要素.children / firstElementChild / lastElementChild

対応: DOM Level 1(1998)

HTML要素の子要素を取得するプロパティです。子要素の一覧や、最初・最後の子要素を取得できます。

構文

// 子要素の一覧を取得します。
var elements = element.children;

// 最初の子要素を取得します。
var first = element.firstElementChild;

// 最後の子要素を取得します。
var last = element.lastElementChild;

プロパティ一覧

プロパティ概要
children子要素のうちHTML要素のみをHTMLCollectionとして返します。テキストノードやコメントノードは含まれません。
childNodesテキストノードやコメントノードを含むすべての子ノードをNodeListとして返します。
firstElementChild最初の子要素(HTML要素)を返します。子要素が存在しない場合は『null』を返します。
lastElementChild最後の子要素(HTML要素)を返します。子要素が存在しない場合は『null』を返します。
firstChild最初の子ノードを返します。テキストノードやコメントノードも対象に含まれます。
lastChild最後の子ノードを返します。テキストノードやコメントノードも対象に含まれます。

サンプルコード

sample_children.html
<ul id="members">
	<li>岡部倫太郎</li>
	<li>牧瀬紅莉栖</li>
	<li>椎名まゆり</li>
	<li>橋田至</li>
</ul>
sample_children.js
var members = document.getElementById("members");

// パターン1: childrenで子要素の数と一覧を確認する
console.log(members.children.length); // 『4』と出力されます。

// パターン2: インデックスで特定の子要素を取得する
console.log(members.children[0].textContent); // 『岡部倫太郎』と出力されます。
console.log(members.children[3].textContent); // 『橋田至』と出力されます。

// パターン3: childNodesはテキストノードも含むため数が多くなる
console.log(members.childNodes.length); // 『9』と出力されます(タグ間の改行もカウントされます)。

// パターン4: firstElementChild / lastElementChild でHTML要素を確実に取得する
console.log(members.firstElementChild.textContent); // 『岡部倫太郎』と出力されます。
console.log(members.lastElementChild.textContent);  // 『橋田至』と出力されます。

// パターン5: ループですべての子要素を処理する
for (var i = 0; i < members.children.length; i++) {
	console.log((i + 1) + ": " + members.children[i].textContent);
}
// 『1: 岡部倫太郎』『2: 牧瀬紅莉栖』『3: 椎名まゆり』『4: 橋田至』と順番に出力されます。

サンプルページはこちら

概要

『HTML要素.children』はHTML要素のみの子要素をHTMLCollectionとして返すプロパティです。『HTML要素.childNodes』はテキストノードやコメントノードも含むすべての子ノードを返すため、通常のDOM操作ではHTML要素だけを扱う『HTML要素.children』を使う方が予期しない結果を防げます。

HTMLのソースコードでは、タグとタグの間にある改行やインデントの空白もテキストノードとして扱われます。そのため『childNodes』や『firstChild』『lastChild』を使うと、空白のテキストノードが取得されてしまう場合があります。HTML要素だけを確実に取得したい場合は『children』『firstElementChild』『lastElementChild』を使用してください。

子要素の数を数えたい場合は『children.length』で取得できます。特定の条件に一致する子要素を探したい場合は『HTML要素.querySelector()』や『HTML要素.querySelectorAll()』の方が便利です。

対応ブラウザ

Chrome Chrome
49 以降
Firefox Firefox
57 以降
2.5 以前 ×
Safari Safari
18 以降
3.1 以前 ×
Edge Edge
80 以降
11 以前 ×
IE IE
11 以降
5 以前 ×
Opera Opera
48 以降
9 以前 ×
iOS Safari iOS Safari
18 以降
2 以前 ×
Android Browser Android Browser
37 以降
4 以前 ×
Chrome Android Chrome Android
36 以降
17 以前 ×
Firefox Android Firefox Android
79 以降
3 以前 ×

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。