节点:compareDocumentPosition() 方法
compareDocumentPosition()
是 Node
接口的方法,用于报告其参数节点相对于调用该方法的节点的位置。
语法
js
compareDocumentPosition(otherNode)
参数
返回值
一个整数,表示 otherNode
相对于 node
的位置,作为 位掩码,组合了 Node
的以下常量属性
Node.DOCUMENT_POSITION_DISCONNECTED
(1
)-
两个节点位于不同的文档中,或位于同一文档的不同树中。
Node.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
)-
结果依赖于任意和/或特定于实现的行为,并且不能保证可移植性。
根据适用的场景,可以设置零个或多个位。例如,如果 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① |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。