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① |
瀏覽器相容性
載入中…