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));