現在の要素が親要素のどの子要素であるかを効率的に取得する_javascriptスキル
たとえば、イベントを処理する場合、現在どの子ノードがクリックされているかを知る必要がある場合がありますが、HTML DOM 自体は対応する属性を直接提供しないため、自分で計算する必要があります。
インデックス番号から、parentNode.childNodes[index] またはparentNode.children[index] を直接使用するだけで、インデックスに対応する子ノードまたは子要素を簡単に取得できます。
しかし、逆に、ノードまたは要素オブジェクトを知ることは、そのインデックス番号を知ることはそれほど簡単ではありません。
一部の特殊な要素については、HTML DOM にはインデックス番号を示す対応する属性があります (主にテーブルの TD 要素と TR 要素)。
表のセルのTD要素にはcellIndex属性があります。
テーブルの行 TR 要素には rowIndex 属性があります。
処理対象がテーブルの場合は、最初にこれら 2 つの属性を使用します。
しかし、一般的なノードや要素には、childNodeIndex や childElementIndex などの属性がありません。
ソリューションは主に 2 つのカテゴリに分類されます:
1. ノードのインデックス番号を事前に計算してキャッシュします (ノード属性または JS 変数に保存できます)。 。
2. リアルタイム計算では、いくつかのノードを通過する必要があります。
アプリケーションでは、さまざまな実際の状況に応じて、上記 2 種類のソリューションのいずれかを選択できます。
オプション 1 が適用されるシナリオ:
DOM 構造が変更されず、個々のノードのインデックスを頻繁に取得する必要がある場合、オプション 1 を使用できます。
利点はその後の読み込みが速いことですが、欠点は初期化にオーバーヘッドが必要であり、DOM 構造が変更された後に再初期化する必要があることです。
オプション 2 が適用される状況:
DOM 構造が変更される可能性があり、個々のノードのインデックスが特に頻繁に取得されない場合は、オプション 2 を使用できます。
利点は、DOM 構造の変更の影響を受けず、DOM 構造を汚染せず、初期化のオーバーヘッドがないことです。欠点は、高頻度の通話には適していないことです。
一般に、オプション 2 を採用することをお勧めします。通常、DOM ツリーのサイズは比較的制限されており、ループの 1 サイクルによって全体のパフォーマンスが大幅に低下することはなく、その利点が大きいためです。
IE ブラウザの場合は、より直接的な方法があります。
IE4 から IE11 までは、sourceIndex 属性があり、DOM ツリー内の要素の順序を表し、要素と親要素の sourceIndex の差を比較することで、どの子要素であるかを簡単に知ることができます。要素はその要素です。
IEでは効率的に判断するためにsourceIndexを使用し、非IEでは一般的なトラバーサルを使用するという処理を区別する関数を書きました。
function getChildrenIndex(ele){
//IE が最も単純かつ最速です
if(ele.sourceIndex){
return ele.sourceIndex - ele.parentNode.sourceIndex - 1;
}
//その他のブラウザ
var i= 0;
while(ele = ele.previousElementSibling){
i ;
}
return i;
}
上記の関数は要素を計算するだけです、値が 1 のノードタイプノード、テキストノード、注釈ノードなどはカウントされません。すべてのノードを計算する必要がある場合、この属性は Element 専用であるため、sourceIndex は使用できません。それに応じて、previousElementSibling もpreviousSibling に変更する必要があります。その後、次の関数として記述する必要があります:
function getNodeIndex(node){
var i=0; while( ele = ele.previousSibling ){
i; このメソッドのテストのパフォーマンスは非常に低く、このメソッドが非常に効率的である場合は、リソース インデックス番号をキャッシュする IE とは異なります。効率を向上させるために二分法を採用していますが、まだそれは不可能です。
最終概要:
IE の場合は、sourceIndex 属性が優先されます。
その他の場合は、previousElementSibling またはpreviousSibling を使用して走査します。
compareDocumentPosition メソッドのパフォーマンスは非常に悪いです。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











jQuery は、DOM 操作など、Web 開発の多くのタスクを簡素化するために使用される人気のある JavaScript ライブラリです。 Web 開発では、DOM 要素の追加、削除、変更、チェックが必要になることが多く、最後のサブ要素の削除も一般的な要件です。この記事では、jQueryを使って最後の子要素を削除する方法をいくつか紹介します。方法 1: last() メソッドを使用する jQuery には、現在のクエリ結果の最後の要素を選択できる last() メソッドが用意されています。これを組み合わせることで

イベントバブリングについて: 子要素をクリックすると親要素のイベントがトリガーされるのはなぜですか?イベントバブリングとは、入れ子になった要素構造において、子要素がイベントをトリガーすると、そのイベントがバブリングのように層ごとに親要素の層に最外層の親要素まで渡されることを意味します。このメカニズムにより、子要素のイベントが要素ツリー全体に伝播され、関連するすべての要素が順番にトリガーされます。イベントバブリングをより深く理解するために、具体的なコード例を見てみましょう。 HTML コード: <divid="parent&q"

:nth-child(n+3) 擬似クラス セレクターを使用して、位置が 3 以上の子要素のスタイルを選択します。具体的なコード例は次のとおりです。 HTML コード: <divid="container" ><divclass="item"> ;最初の子要素</div><divclass="item"&

jQueryを使用して最後の子要素を削除するにはどうすればよいですか?フロントエンド開発では、ページ要素の追加、削除、変更、確認が必要な操作に遭遇することがよくあります。その中で、最後の子要素を削除することは共通の要件です。この記事では、jQueryを使って最後の子要素を削除する方法を具体的なコード例とともに紹介します。まず、jQuery ライブラリをページに導入して、その機能が使用できるようにする必要があります。次のコードを HTML ファイルに追加します: <

:nth-child 擬似クラス セレクターを使用して、特定の位置にある子要素を選択するための CSS スタイル。CSS では、擬似クラス セレクターは、HTML ドキュメント内の特定の状態にある要素を選択するために使用されます。 :hover や :active などの一般的な疑似クラス セレクターに加えて、:nth-child と呼ばれる非常に便利な疑似クラス セレクターもあります。これを使用すると、特定の位置にある子要素を選択できます。 :nth-child 擬似クラス セレクターの構文は次のとおりです。parent element:nth-child(n) ここで、parent 要素は親要素を表します。

jQuery を使用して要素に子要素が含まれるかどうかを判断する方法 Web 開発では、要素に子要素が含まれるかどうかを判断する必要がある状況によく遭遇します。この機能は jQuery を使用すると非常に簡単に実現できます。この記事では、jQueryを使用して要素に子要素が含まれているかどうかを判断する方法と、具体的なコード例を紹介します。 jQuery では、children() メソッドを使用して、指定した要素の直接の子要素をすべて選択できます。要素に子要素が含まれる場合は、childr を使用します。

jQuery はフロントエンド開発で広く使用されている JavaScript ライブラリで、DOM 要素を簡単に操作できるシンプルかつ強力な API を提供します。実際の開発では、要素に子要素が含まれているかどうかを判断する必要がある場合があり、その場合は jQuery を使用する必要があります。要素に子要素があるかどうかを判断するには、jQuery が提供するメソッドを使用できます。以下は、jQuery を使用して要素に子要素が含まれているかどうかを判断する方法を示すサンプル コードです。 <

タイトル: jQuery 例: jQuery を使用して最後の子要素を削除するには? Web 開発では、JavaScript を使用して DOM 要素を操作する必要がある状況によく遭遇します。広く使用されている JavaScript ライブラリとして、jQuery は DOM 要素を操作するための便利なメソッドを多数提供します。この記事では、例を使用して jQuery を使用して最後の子要素を削除する方法を紹介し、詳細なコード例を示します。まず、HTML ファイルにこれを導入する必要があります
