知名度が低いウェブ標準ひとり Advent Calendar 2021 – 22 日目

今日は compareDocumentPosition() です。2 つのノード(HTML 要素とか)を比べてドキュメントツリー上で出現位置を比較します。

基本的な使い方

比較対象を引数にとります。

const result = node1.compareDocumentPosition(node2);

console.log('先に出現?', Boolean(result & Node.DOCUMENT_POSITION_PRECEDING));

結果はビットに詰められ戻ってきます。

ビットは以下の定数を利用して & でマスクして確認します。

  • Node.DOCUMENT_POSITION_DISCONNECTED
  • Node.DOCUMENT_POSITION_PRECEDING
  • Node.DOCUMENT_POSITION_FOLLOWING
  • Node.DOCUMENT_POSITION_CONTAINS
  • Node.DOCUMENT_POSITION_CONTAINED_BY
  • Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC

ビットとかマスクとかウェブ系で出てくるの珍しいよね。

おしまい

使用目的は明確。機会があれば使おう、いつかはわからないけど。なんかこう XML を 検証するときとか?

参考