ホームページ > 記事 > ウェブフロントエンド > javascript HTML DOMの親、子、隣接ノードの取得_javascriptスキル
Web アプリケーション、特に Web 2.0 プログラムの開発では、多くの場合、ページ内の要素を取得し、その要素のスタイル、コンテンツなどを更新する必要があります。更新する要素をどのように取得するかが最初に解決すべき問題です。幸いなことに、JavaScript を使用してノードを取得する方法は数多くあります。簡単にまとめます (次の方法は IE7 と Firefox2.0.0.11 でテストされました):
1. トップレベルのドキュメントを使用します。ノード取得:
(1) document.getElementById(elementId): このメソッドは、ノードの ID を通じて必要な要素を正確に取得でき、比較的単純で高速なメソッドです。ページに同じ ID を持つ複数のノードが含まれている場合は、最初のノードのみが返されます。
現在、プロトタイプや Mootools などの多くの JavaScript ライブラリが登場していますが、これらはより単純なメソッド $(id) を提供しており、パラメータは依然としてノードの ID です。このメソッドは
document.getElementById() の別の記述方法と見なされますが、$() の関数の方が強力です。具体的な使用方法については、それぞれの API ドキュメントを参照してください。
(2) document.getElementsByName(elementName): このメソッドは、名前からわかるように、ノード要素ではなく、同じ名前を持つノードの配列を返します。次に、ノードの特定の属性をループして、それが必要なノードであるかどうかを判断します。
例: HTML では、チェックボックスとラジオは同じ name 属性値を使用してグループ内の要素を識別します。選択した要素を今すぐ取得したい場合は、まずシャッフルされた要素を取得し、次にループしてノードのチェックされた属性値が true かどうかを判断します。
(3) document.getElementsByTagName(tagName): このメソッドはタグを通じてノードを取得します。このメソッドは配列も返します。たとえば、
document.getElementsByTagName('A') はすべてのハイパーリンクを返します。ページ上のノード。ノードを取得する前に、ノードのタイプは一般にわかっているため、この方法を使用するのは比較的簡単です。しかし、欠点も明らかです。それは、返される配列が非常に大きくなる可能性があり、多くの時間を無駄にすることです。では、この方法は無駄なのでしょうか?もちろん、この方法は上記の 2 つとは異なります。これはドキュメント ノード独自の方法ではなく、後述する他のノードにも適用できます。
2. 親ノードを通過します:
(1)parentObj.firstChild: ノードが既知のノード ( parentObj) このメソッド。この属性は再帰的に使用できます。つまり、
parentObj.firstChild.firstChild.firstChild... の形式をサポートしているため、より深いノードを取得できます。
(2)parentObj.lastChild: 明らかに、この属性は既知のノード (parentObj) の最後の子ノードを取得するためのものです。 firstChild と同様に、再帰的に使用することもできます。
使用中に、この 2 つを組み合わせると、より刺激的な効果が得られます。つまり、parentObj.firstChild.lastChild.lastChild...
(3)parentObj.childNodes: 子の配列を取得します。ノードのノードを検索し、ループまたはインデックス作成を通じて必要なノードを見つけることができます。
注: テストの結果、IE7 では直接の子ノードの配列が取得されるのに対し、Firefox2.0.0.11 では子ノードの子ノードを含むすべての子ノードが取得されることが判明しました。 。
(4)parentObj.children: 既知のノードの直接の子ノード配列を取得します。
注: テスト後、IE7 では効果は childNodes と同じですが、Firefox2.0.0.11 はサポートしていません。これが、私が他の方法とは異なるスタイルを使用する理由です。したがって、その使用はお勧めできません。
(5)parentObj.getElementsByTagName(tagName): 使用方法については詳しく説明しません。既知のノードのすべての子ノードのうち、指定された値の子ノードの配列を返します。例:
parentObj.getElementsByTagName('A') は、既知の子ノード内のすべてのハイパーリンクを返します。
3. 隣接ノードを通じて取得します:
(1) neighborsNode.previousSibling: 既知のノード (neighbourNode) の前のノードを取得します。先ほどの firstChild 、 lastChild は再帰的に利用できるようです。
(2) neighborsNode.nextSibling: 既知のノード (neighbourNode) の次のノードを取得します。再帰もサポートします。
4. 子ノードを通じて取得します:
(1) childNode.parentNode: 既知のノードの親ノードを取得します。
上記のメソッドはほんの一部の基本的なメソッドです。Prototype などの JavaScript ライブラリを使用する場合は、ノードのクラスを介して取得するなど、他の異なるメソッドも取得できます。しかし、上記の方法を柔軟に使い分けることができれば、ほとんどのプログラムには対応できると思います。