XML DOM insertBefore() メソッド
定義および用法
insertBefore() メソッドは新しい子ノードを既存の子ノードの前に挿入します。
このメソッドはこの新しい子ノードを返します。
文法:
elementNode.insertBefore(new_node,existing_node)
パラメータ | 説明 |
---|---|
new_node | 必須。挿入するノード。 |
existing_node | 必須。既存のノード。新しいノードをこのノードの前に挿入します。 |
ヒントおよび注釈:
注釈:Internet Explorerはノード間に生成される空白テキストノード(例えば、改行文字)を無視しますが、Mozillaはこれを行いません。したがって、以下の例では、最後の子ノードのノードタイプを確認する関数を使用します。
要素ノードのノードタイプは1であり、したがって最後の子ノードが要素ノードでない場合、前のノードに移動し、そのノードが要素ノードであるかどうかを確認します。このプロセスは、最後の要素ノードの子ノードが見つかるまで続きます。この方法で、Internet ExplorerおよびMozillaで正しい結果が得られます。
IEとMozillaブラウザの違いに関するさらに詳細な情報は、CodeW3C.comのXML DOMチュートリアルの DOM ブラウザ です。
例
すべての例では、このセクションで使用する XML ファイル books.xml、および JavaScript 関数 loadXMLDoc()。
以下のコードスニペットは新しい <book> ノードを作成し、それをドキュメントの最後の <book> 要素の前に挿入します:
//最後の子ノードが要素ノードであるかチェック
function get_lastchild(n)
{
x=n.lastChild;
while (x.nodeType!=1)
{
x=x.previousSibling;
}
return x;
}
xmlDoc=loadXMLDoc("books.xml");
newNode=xmlDoc.createElement("book");
newTitle=xmlDoc.createElement("title");
newText=xmlDoc.createTextNode("A Notebook");
newTitle.appendChild(newText);
newNode.appendChild(newTitle);
xmlDoc.documentElement.insertBefore(newNode,get_lastchild(x));