XML DOM compareDocumentPosition() 方法

定義和用法

compareDocumentPosition() 方法比較 DOM 層次結構(文檔)中兩個節點的位置。

語法

nodeObject.compareDocumentPosition(node)

參數

參數 描述
node 必需。Node 對象。規定與當前節點進行比較的節點。

技術細節

DOM 版本: Core Level 3 Node Object
返回值:

數字,表示兩個節點相對位置的位置。可能的返回值為:

  • 1 - 沒有關系,兩個節點不屬于同一個文檔。
  • 2 - 指定的節點位于當前節點之前。
  • 4 - 指定的節點跟隨當前節點。
  • 8 - 指定的節點包含當前節點。
  • 16 - 指定的節點被包含在當前節點中。
  • 32 - 指定的節點和當前節點沒有共同的容器節點,或者兩個節點是同一節點的不同屬性。

注意:返回值也可以是值的組合。例如。返回值 20 表示指定節點被包含在當前節點 (16) 中,并且指定節點跟隨當前節點 (4) 。

實例

下面的代碼將 "books.xml" 加載到 xmlDoc 中,,并比較 DOM 層次結構中兩個節點(第一個和第三個 <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 及更早版本不支持此方法。