JavaScript の新しい要素トラバーサルプロパティを使用して子要素をトラバースする方法を学びます

JavaScript の新しい要素トラバーサルプロパティを使用して子要素をトラバースする方法を学びます

以前は、childNodes プロパティまたは firstChild を使用して子要素をトラバースできましたが、子要素が ELement 要素であるかどうかを判断する必要がありました。

その後、W3C は要素トラバーサル仕様を通じてトラバーサル用の新しい属性セットを定義しました。これにより、判断の必要がなくなり、非常に便利になりました。

1. ChildNodes属性のトラバーサル

子要素は通常、 childNodesプロパティを通じて走査されますが、このプロパティには空白ノードが含まれるため、 Element要素のみを走査する場合は非常に不便です。

次のコード例を参照してください。

<div class="article">

    <p>段落 1</p>

    <p>段落 2</p>

    <p>第3段落</p>

</div>

 

<script type="text/javascript">

    childList を document.querySelector(".article").childNodes とします。

    コンソールにログ出力します。

    // コンソール出力:

    // ノードリスト(7) 1

</スクリプト>

コンソールビュー効果:

子要素の空白ノードをトラバースします。

取得された子要素には、改行、インデント、スペースなどの空のtextノードが含まれます。

childList内の p 要素をトラバースする場合、実際にはこれがよく起こります。

次に、子要素が Element タイプであるかどうかを判断する必要があります。

childList を document.querySelector(".article").childNodes とします。

// 子要素をトラバースする childList.forEach((item, index) => {

    if (item.nodeType == 1) { // 要素タイプかどうかを確認します console.log(item);

    }

});

 

// コンソール出力:

// 3 p 要素

2. 要素シリーズ属性のトラバーサル

要素トラバーサルは、DOM 要素に 5 つのプロパティを追加します。

  • 1. childElementCount : 子要素の数 ( nodeType=1 )。
  • 2. firstElementChildeElement型の最初の子要素を指します。
  • 3. lastElementChildeElement型の最後の子要素を指します。
  • 4. previousElementSiblingElement型の前の兄弟要素を指します。
  • 5. nextElementSiblingElement型の次の兄弟要素を指します。

これらの新しい属性を使用すると、 Element要素のトラバースがはるかに簡単になります。

上記の例を引き続き取り上げます。

// 最初の要素を取得します。let currentElement = document.querySelector(".article").firstElementChild;

// 子要素を走査します while (currentElement) {

    console.log(現在の要素);

    // 次の要素を取得します。currentElement = currentElement.nextElementSibling;

}

これにより、プロセスがより簡潔になります。

現在、IE9 以降とすべての最新ブラウザがこれらのプロパティをサポートしています。

これで、 JavaScriptを使用して新しいElement Traversal Element Traversal属性を使用して子要素をトラバースする方法についての説明は終わりです。関連コンテンツの詳細についてはJavaScript 123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • js の要素トラバーサル方法 要素トラバーサル仕様

<<:  スケルトン スクリーンの読み込みプレースホルダー アニメーション効果を実装するための CSS + HTML (アニメーション付き)

>>:  リンク使用時にハイパーリンクがジャンプしないようにする方法

推薦する

Windows 2008 Server サブドメインを親ドメインに追加すると、ドメインが既に存在するというエラー メッセージが表示されます。

Windows 2008 Serverのサブドメインを親ドメインに参加させると、「ドメインは既に存...

HTML onfocus gain focus および onblur lose focus イベントの詳細な説明

HTML onfocus イベント属性定義と使用法onfocus 属性は、要素がフォーカスを受け取っ...

MySQL メタデータで Hive テーブル作成ステートメントのコメント スクリプトを生成する方法

序文この記事は主にMySQLメタデータ生成Hiveテーブル作成ステートメントコメントスクリプトに関す...

MySQLがlocalhost経由でデータベースに接続できない問題に対する完璧な解決策

問題:あるサーバー上の PHP プログラムは、localhost アドレス経由でデータベースに接続で...

Vue3ナビゲーションバーコンポーネントのカプセル化実装方法

参考までに、Vue3でナビゲーションバーコンポーネントをカプセル化し、スクロールバーのスクロールに合...

Ubuntu 18.04 に phpMyAdmin をインストールするための詳細なチュートリアル

Ubuntu 18.04 上の Apache で動作するように phpMyAdmin をインストール...

JavaScriptにおけるこのポインティング問題の詳細な説明

序文信じてください。この記事の 7️⃣ ステップを覚えておけば、JS の this リファレンスを完...

SQL の左結合と右結合の原理と例の分析

テーブルが 2 つあり、テーブル A のレコードがテーブル B に存在しない可能性があります。左結合...

Nginx rtmp モジュールのコンパイル ARM バージョンの問題

目次1. 準備: 2. ソースコードのコンパイル1. 設定する2. コンパイルエラー3. ターゲット...

CSSはインラインブロックのずれの問題を解決します

もうナンセンスじゃない、郵便番号HTML部分 <div class="positio...

レスポンシブなアコーディオン効果を実現するための CSS3 の詳細な説明

最近、外国人が CSS3 を使用してアコーディオン効果を実現しているビデオを見たので、自分で学習した...

Hタグはウェブページ制作において適切に使用すべきである

HTML タグには、ページのタイトルを処理するための特別なタグがあります。これらは h1、h2、h3...

MySQL共通ストレージエンジンの機能と使用方法の詳細な説明

この記事では、一般的な MySQL ストレージ エンジンの機能と使用方法を例を使って説明します。ご参...

MySQLでバッチを更新するいくつかの方法

通常、フィールド値を更新するには次の SQL ステートメントを使用します。 mytable を更新し...

メタを使用してトラフィックキャッシュをキャンセルし、ページにアクセスするたびにページを更新して簡単にデバッグできるようにします。

コードをコピーコードは次のとおりです。 <!-- ブラウザがローカル キャッシュからページにア...