1. ホーム
  2. javascript

[解決済み] 子ノードのインデックスを取得する

2022-04-24 10:53:07

質問

ストレートアップのjavascript(つまりjQueryなどの拡張なし)で、すべての子ノードを反復して比較することなく、親ノード内の子ノードのインデックスを決定する方法はありますか?

例.

var child = document.getElementById('my_element');
var parent = child.parentNode;
var childNodes = parent.childNodes;
var count = childNodes.length;
var child_index;
for (var i = 0; i < count; ++i) {
  if (child === childNodes[i]) {
    child_index = i;
    break;
  }
}

子供のインデックスを決定する良い方法はないでしょうか?

どのように解決するのですか?

を使用することができます。 previousSibling プロパティを使用して、兄弟姉妹を繰り返し処理し、最終的に null で、何人の兄弟に遭遇したかをカウントします。

var i = 0;
while( (child = child.previousSibling) != null ) 
  i++;
//at the end i will contain the index.

なお、Javaのような言語では getPreviousSibling() 関数がありますが、JSではこれがプロパティになっています。 previousSibling .

使用方法 前要素の兄弟 または ネクストエレメントシブリング を使えば、テキストとコメントのノードを無視することができます。