【JavaScript】「element.nextElementSibling」の使い方!【分かりやすい】
しゅーた(@chibasyuta)です!
この記事では「JavaScript」の「element.nextElementSibling」の使い方を解説します。
「element.nextElementSibling」の基本的な使い方から実際のコード例まで、解説していきますので、興味がある方は読んでいってください!
この記事の内容!
- 「element.nextElementSibling」とは何か?
- 「element.nextElementSibling」の使い方!
- ユースケース
それでは内容へ入ります。
「element.nextElementSibling」とは何か?
「element.nextElementSibling」
- 「次にある兄弟要素」の取得
- nullを返すことがある(次に要素が存在しない場合)
- 「テキスト」や「コメント」はスキップ
「element.nextElementSibling」の使い方!
<div id="container">
<p id="first">これは一番目のパラグラフです</p>
<p id="second">これは二番目のパラグラフです</p>
<p id="third">これは三番目のパラグラフです</p>
</div>
const firstParagraph = document.getElementById('first');
const secondParagraph = firstParagraph.nextElementSibling;
console.log(secondParagraph.id); // 出力: "second"
このコードでは、first IDの要素を取得し、その次にある要素の ID をログに出力しています。
まず「first」を「id」に持つ要素を取得する。
そして「element.nextElementSibling」を使用して次の要素を取得する。
そしてそれをコンソールに出力しています。
ユースケース
次の要素に強調表示を追加
const firstParagraph = document.getElementById('first');
const secondParagraph = firstParagraph.nextElementSibling;
if (secondParagraph) {
secondParagraph.style.fontWeight = 'bold';
}
初めの要素の「次の兄弟要素」にスタイルを追加しています。
要素をループで読み取る
let currentElement = document.getElementById('first');
while (currentElement) {
console.log(currentElement.textContent);
currentElement = currentElement.nextElementSibling;
}
このコードは、要素を連続的に読み込むのに有用です。
注意点!
「null」が返ってくることがある
次に要素が存在しない場合、nullが返されるので、エラーの因果とならないようにしましょう。
テキストとコメントの無視
「element.nextElementSibling」で扱えるのは「要素」であるので、「Node」ではないことに注意しましょう。
「Node」を扱いたいのなら「element.nextSibling」が使えますので、こちらを使ってみてください!
参考リンク!
仕様書。
https://dom.spec.whatwg.org/#ref-for-dom-nondocumenttypechildnode-nextelementsibling%E2%91%A1
MDN。
https://developer.mozilla.org/ja/docs/Web/API/Element/nextElementSibling
おすすめの再生リスト!
こちらは僕が制作したYouTubeの再生リスト「JavaScriptの入門編」です。
「JavaScriptの入門編」はWeb制作を勉強している方がJavaScriptに入門する際に知っておきたい情報をまとめたコンテンツとなります。
こちらの再生リストで「JavaScript」について「丁寧」に解説しているので、もし気になる方はチェックしてみてください!一緒に楽しく学習しましょう!!
まとめ!
「element.nextElementSibling」を使うことで「次にある兄弟要素」を扱えます。
さまざまな場面で役に立つので、ぜひ覚えて使ってみてください。
それではまた!