XML DOM compareDocumentPosition() メソッド

定義と用法

compareDocumentPosition() DOM 層層構造(ドキュメント)内の二つのノードの位置を比較します。

構文

nodeObject.compareDocumentPosition(node)

パラメータ

パラメータ 説明
node 必須。Nodeオブジェクト。比較するノードを指定します。

技術的詳細

DOMバージョン: Core Level 3 Node Object
返り値:

数字で、2つのノードの相対的な位置を示します。可能な返り値は:

  • 1 - 関係がなく、2つのノードが同じドキュメントに属していない場合。
  • 2 - 指定されたノードが現在のノードの前に位置しています。
  • 4 - 指定されたノードが現在のノードの後に続いています。
  • 8 - 指定されたノードが現在のノードを含んでいます。
  • 16 - 指定されたノードが現在のノードに含まれています。
  • 32 - 指定されたノードと現在のノードには共通のコンテナノードがなく、または2つのノードが同じノードの異なる属性である場合。

注意:返り値も値の組み合わせで表示されることがあります。例えば、返り値20は指定されたノードが現在のノード(16)に含まれており、指定されたノードが現在のノード(4)の後に続いていることを示します。

以下のコードは "books.xml" を xmlDoc にロードし、DOM階層構造の2つのノード(最初と3番目の <book> 要素)の位置を比較します:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
   if (this.readyState == 4 && this.status == 200) {
       myFunction(this);
   }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName('book')[0];
    var y = xmlDoc.getElementsByTagName('book')[2];
    document.getElementById("demo").innerHTML =
    x.compareDocumentPosition(y);
}

自分で試してみてください

ほとんどのブラウザは空白や新しい行をテキストノードと見なしますが、IE 9およびそれ以前のバージョンでは見なしません。したがって、上記の例では、ほとんどのブラウザが4を返しますが、IE 9およびそれ以前のバージョンは2を返します。

ブラウザサポート

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
サポート サポート サポート サポート サポート

すべての主要ブラウザは compareDocumentPosition() メソッドをサポートしています。

注記:Internet Explorer 9およびそれ以前のバージョンではこのメソッドをサポートしていません。