--- title: Node.compareDocumentPosition slug: Web/API/Node/compareDocumentPosition tags: - API - DOM - Method - Node - Position - Reference - 比较文档位置 translation_of: Web/API/Node/compareDocumentPosition ---
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
。一个表示 Node
和 otherNode
在 {{domxref("Document")}} 中关系的整数值。在一些场景下,可能设置了不止一位比特值。比如 otherNode
在文档中是靠前的且包含了 Node
, 那么DOCUMENT_POSITION_CONTAINS
和 DOCUMENT_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 的 {{domxref("NodeList.item()")}} 方法,它和 getElementsByTagName('head')[0] 是一样的。
规范 | 状态 | 注释 |
{{SpecName('DOM WHATWG','#dom-node-comparedocumentposition','Node.compareDocumentPosition()')}} | {{Spec2('DOM WHATWG')}} | |
{{SpecName('DOM3 Core','core.html#Node3-compareDocumentPosition','Node.compareDocumentPosition()')}} | {{Spec2('DOM3 Core')}} | Initial definition |
{{Compat("api.Node.compareDocumentPosition")}}