Node.compareDocumentPosition() 可以比较当前节点与任意文档中的另一个节点的位置关系。

返回值是一个具有以下值的位掩码:

常量名 十进制值 含义
DOCUMENT_POSITION_DISCONNECTED 1 不在同一文档中
DOCUMENT_POSITION_PRECEDING 2 otherNode在node之前
DOCUMENT_POSITION_FOLLOWING 4 otherNode在node之后
DOCUMENT_POSITION_CONTAINS 8 otherNode包含node
DOCUMENT_POSITION_CONTAINED_BY 16 otherNode被node包含
DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC 32 待定

语法

compareMask = node.compareDocumentPosition( otherNode ) 

参数

otherNode
用于比较位置的 Node 。

返回值

一个表示 NodeotherNode Document 中关系的整数值。在一些场景下,可能设置了不止一位比特值。比如 otherNode 在文档中是靠前的且包含了 Node, 那么DOCUMENT_POSITION_CONTAINSDOCUMENT_POSITION_PRECEDING 位都会设置,所以结果会是 0x0A 即十进制下的 10。

例子

var head = document.getElementsByTagName('head').item(0);
if (head.compareDocumentPosition(document.body) & Node.DOCUMENT_POSITION_FOLLOWING) {
  console.log("well-formed document");
} else {
  console.log("<head> is not before <body>");
}

注: 因为compareDocumentPosition返回的是一个位掩码,所以必须再使用按位与运算符才能得到有意义的值.

注意第一条语句使用了带有参数 0 的 NodeList.item() 方法,它和 getElementsByTagName('head')[0] 是一样的。

规范

规范 状态 注释
DOM
Node.compareDocumentPosition()
Living Standard  
Document Object Model (DOM) Level 3 Core Specification
Node.compareDocumentPosition()
Obsolete Initial definition

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
compareDocumentPositionChrome Full support YesEdge Full support 12Firefox Full support 9IE Full support 9
Notes
Full support 9
Notes
Notes Only supports contains for elements
Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 9Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android ?

Legend

Full support  
Full support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.

相关链接

文档标签和贡献者

此页面的贡献者: Ende93, mdnwebdocs-bot, teoli, cuixiping, jsx, ziyunfei
最后编辑者: Ende93,