<p>テキスト1<strong>強調1</strong>テキスト2</p>
こんな HTML があった時、node の構造としては以下のようになっています。
この時、テキスト2
となっている TextNode が p
から見たときに何番目の Node なのを知りたくなったので、こんな感じのコードを書きました。取得したいのは3番目の Node ということです(0 始まりなのでコード的には 2)。
const sel = window.getSelection()
const range = sel.getRangeAt(0)
let targetNode = range.startContainer
let i = 0
while ((targetNode = targetNode.previousSibling) !== null) {
i++
}
単に previousSibling
で前の node を存在するまで見ていくだけ。