Element.nextElementSibling - 次の要素を取得する
投稿日: / 更新日:
JavaScriptの、ElementオブジェクトのnextElementSibling
は次の要素を取得するプロパティです。
説明
ElementオブジェクトのnextElementSiblingプロパティは、次の要素を含みます。「次」とは具体的に、同じ親要素を持って隣接する次の要素です。テキストノード、コメントノードは含みません。次の要素がない場合、null
が返ります。
<ul>
<li>要素1</li>
<li id="target">要素2</li>
<li>要素3</li>
</ul>
// 2つ目のli要素を取得
var liElement = document.getElementById( "target" ) ;
// 次の要素を取得 ( → <li>要素3</li> )
var nextElementSibling = liElement.nextElementSibling ;
例えば、2つ目のli要素のnextElementSiblingプロパティには、3つ目のli要素が含まれています。ul要素という同じ要素を親に持つ、次の位置に隣接する要素ですよね。3つ目の要素のnextElementSiblingプロパティには、次の要素がないのでnull
が含まれます。
似たプロパティにnextSiblingがあります。nextSiblingとnextElementSiblingの違いは、「取得するのにテキストノード、コメントノードを考慮するか否か」です。同じul要素で見てみましょう。
<ul>
<li>要素1</li>
<li id="target">要素2</li>↓
<li>要素3</li>
</ul>
// 2つ目のli要素を取得
var liElement = document.getElementById( "target" ) ;
// 次の要素を取得 ( → テキストノード (改行とタブ文字) )
var nextSibling = liElement.nextSibling ;
2つ目のli要素のnextSiblingプロパティは、3つ目のli要素ではありません。何故なら、2つ目のli要素と3つ目のli要素の間には改行とタブ文字が存在するからです。nextSiblingプロパティには、テキストノードとコメントノードを無視しないので、この改行とタブ文字を次のノードとして認識するわけです。
もしも2つ目と3つ目のli要素の間に何も文字がなければ、nextSiblingとnextElementSiblingプロパティの内容は同じになります。要素だけが必要となる場合、nextElementSiblingプロパティは有用です。
サンプルコード
<ul>
<li>要素1</li>
<li id="target">要素2</li>
<li>要素3</li>
</ul>
// li要素を取得
var liElement = document.getElementById( "target" ) ;
// 次の要素を取得 ( → <li>要素3</li> )
var nextElementSibling = liElement.nextElementSibling ;
デモ
2つ目のli要素のnextElementSiblingプロパティを取得して表示します。コンソールでオブジェクトの中身を確認できます。
構文
readonly Element nextElementSibling = Element.nextElementSibling
返り値
項目 | 説明 |
---|---|
nextElementSibling | 次の要素。コメントノード、テキストノードは無視される。 |
関連項目
- Location - ブラウザロケーションのオブジェクト。
- Location.assign() - コンテンツをロードして表示する。
- Location.reload() - ドキュメントをリロードする。
- Location.replace() - 現在のURLを置換する。
外部リンク
- HTML Living Standard - WHATWGによる仕様書。