ParentNodeインターフェース、ChildNodeインターフェース
Node インターフェイスの継承に加えて、ノード オブジェクトには他のインターフェイスもあります。 ParentNode
インターフェイスは、現在のノードが親ノードであることを示し、子ノードを処理するためのいくつかのメソッドを提供します。 ChildNode
インターフェイスは、現在のノードが子ノードであることを示し、いくつかの関連メソッドを提供します。
ParentNode インターフェース
現在のノードが親ノードの場合、ParentNode
インターフェースが混在します。要素ノード (element)、ドキュメント ノード (document)、およびドキュメント フラグメント ノード (documentFragment) のみが子ノードを持つため、これら 3 種類のノードのみが ParentNode
インターフェイスを持ちます。
ParentNode.children
children
プロパティは、メンバーがすべて現在のノードの要素子ノードである HTMLCollection
インスタンスを返します。このプロパティは読み取り専用です。
以下は、ノードのすべての子要素を走査する例です。
for (var i = 0; i < el.children.length; i++) {
// ...
}
children
属性には要素の子ノードのみが含まれ、他のタイプの子ノード (テキストの子ノードなど) は含まれないことに注意してください。要素タイプの子ノードがない場合、HTMLCollection
インスタンスの戻り値 length
プロパティは 0
になります。
さらに、HTMLCollection
は動的コレクションであり、DOM への変更をリアルタイムで反映します。
ParentNode.firstElementChild
firstElementChild
プロパティは、現在のノードの最初の要素の子ノードを返します。子要素がない場合は、「null」が返されます。
document.firstElementChild.nodeName
// "HTML"
上記のコードでは、document
ノードの最初の要素の子ノードは <HTML>
です。
ParentNode.lastElementChild
lastElementChild
プロパティは、現在のノードの最後の要素の子ノードを返します。要素の子ノードがない場合は null
を返します。
document.lastElementChild.nodeName
// "HTML"
上記のコードでは、document
ノードの最後の要素子ノードは <HTML>
です (document
にはこの 1 つの要素子ノードしか含まれていないため)。
ParentNode.childElementCount
childElementCount
プロパティは、現在のノードのすべての要素の子ノードの数を表す整数を返します。子要素が含まれていない場合は、「0」を返します。
document.body.childElementCount // 13
ParentNode.append()、ParentNode.prepend()
(1)ParentNode.append()
append()
メソッドは、1 つ以上の子ノードを現在のノードに追加します。位置は最後の要素の子ノードの後にあります。
このメソッドは、要素のサブノード (パラメーターは要素ノード) を追加できるだけでなく、テキストのサブノード (パラメーターは文字列) も追加できます。
var 親 = document.body;
//要素の子ノードを追加
var p = document.createElement('p');
親.append(p);
//テキストサブノードを追加
親.append('こんにちは');
//複数の要素の子ノードを追加します
var p1 = document.createElement('p');
var p2 = document.createElement('p');
親.append(p1, p2);
//要素サブノードとテキストサブノードを追加します
var p = document.createElement('p');
parent.append('Hello', p);
このメソッドには戻り値がありません。
このメソッドは Node.prototype.appendChild()
メソッドと 3 つの点で異なりますので注意してください。
append()
はパラメータとして文字列を許可しますが、appendChild()
はパラメータとして子ノードのみを許可します。append()
には戻り値がありませんが、appendChild()
は追加された子ノードを返します。append()
は複数の子ノードと文字列を追加できます (つまり、複数のパラメーターが許可されます)。appendChild()
は 1 つのノードのみ追加できます (つまり、1 つのパラメーターのみが許可されます)。
(2)ParentNode.prepend()
prepend()
メソッドは 1 つ以上の子ノードを現在のノードに追加します。その位置は最初の要素の子ノードの前になります。使い方は append()
メソッドとまったく同じで、戻り値もありません。
ChildNode インターフェース
ノードに親ノードがある場合、そのノードには ChildNode
インターフェイスがあります。
ChildNode.remove()
remove()
メソッドは、現在のノードを親ノードから削除するために使用されます。
el.remove()
上記のコードは、DOM から el
ノードを削除します。
ChildNode.before()、ChildNode.after()
(1)ChildNode.before()
before()
メソッドは、現在のノードの前に 1 つ以上の兄弟ノードを挿入するために使用されます。どちらも同じ親ノードを持っています。
このメソッドは要素ノードだけでなくテキスト ノードも挿入できることに注意してください。
var p = document.createElement('p');
var p1 = document.createElement('p');
//要素ノードを挿入
el.before(p);
//テキストノードを挿入
el.before('こんにちは');
//複数の要素ノードを挿入
el.before(p, p1);
//要素ノードとテキストノードを挿入
el.before(p, 'こんにちは');
(2)ChildNode.after()
after()
メソッドは、現在のノードの後に 1 つ以上の兄弟ノードを挿入するために使用されます。両方のノードは同じ親ノードを持ちます。使い方は「before」メソッドとまったく同じです。
ChildNode.replaceWith()
replaceWith()
メソッドはパラメータ node を使用して現在のノードを置き換えます。パラメータは要素ノードまたはテキスト ノードにすることができます。
varspan = document.createElement('span');
el.replaceWith(スパン);
上記のコードでは、「el」ノードが「span」ノードに置き換えられます。
作者: wangdoc
アドレス: https://wangdoc.com/
ライセンス: クリエイティブ・コモンズ 3.0