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 及更早版本不支持此方法。