Node:compareDocumentPosition() 方法
Node 接口的 compareDocumentPosition() 方法会报告其参数节点相对于调用该方法的节点的位置。
语法
js
compareDocumentPosition(otherNode)
参数
返回值
一个表示 otherNode 相对于 node 位置的整数值,它是 位掩码,结合了 Node 的以下常量属性:
Node.DOCUMENT_POSITION_DISCONNECTED(1)-
两个节点位于不同的文档中,或者位于同一文档中的不同树结构里。
Node.DOCUMENT_POSITION_PRECEDING(2)-
在包含两个节点的树的 先序深度优先遍历 中,
otherNode排在node之前(例如,作为祖先节点、前一个同级节点、前一个同级节点的子节点,或祖先节点的前一个同级节点),或者(如果它们不连接)以任意但一致的顺序排在node之前。 Node.DOCUMENT_POSITION_FOLLOWING(4)-
在包含两个节点的树的 先序深度优先遍历 中,
otherNode排在node之后(例如,作为子节点、后一个同级节点、后一个同级节点的子节点,或祖先节点的后一个同级节点),或者(如果它们不连接)以任意但一致的顺序排在node之后。 Node.DOCUMENT_POSITION_CONTAINS(8)-
otherNode是node的祖先节点。 Node.DOCUMENT_POSITION_CONTAINED_BY(16)-
otherNode是node的后代节点。 Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC(32)-
结果依赖于任意和/或特定于实现的行为,不保证可移植性。
可以设置零个或多个位,具体取决于适用的场景。例如,如果 otherNode 在文档中的位置更靠前并且包含了调用 compareDocumentPosition() 的节点,那么 DOCUMENT_POSITION_CONTAINS 和 DOCUMENT_POSITION_PRECEDING 这两个位都会被设置,产生值为 10 (0x0A)。
示例
js
const head = document.head;
const body = document.body;
if (head.compareDocumentPosition(body) & Node.DOCUMENT_POSITION_FOLLOWING) {
console.log("Well-formed document");
} else {
console.error("<head> is not before <body>");
}
注意: 因为 compareDocumentPosition() 返回的结果是一个位掩码,所以必须使用 按位与运算符 才能获得有意义的结果。
规范
| 规范 |
|---|
| DOM # ref-for-dom-node-comparedocumentposition① |
浏览器兼容性
加载中…