<div> <br> <a>タイトル</a> <br> <ul> <br> <li> >サブカテゴリ 1<a></a> 🎜>プロジェクト 1</li> <br> <ul> パラメータは同じですが、ユーザーが「プロジェクトx」をクリックしたか「サブカテゴリ」をクリックしたかを垂直位置(ノードの深さ)で区別しますドキュメント内では、たとえばノードの深さは「 <br> の「プロジェクト 1」は 2、「サブカテゴリ 1」のノードの深さは 4 です。<li><a> は除外後のノードの深さを計算します。 再帰的な方法の後、より簡単な方法を見つけました: </a></li>functionparentIndexOf(node,parent){ <br> if(node==parent){return 0;} <li> for (var i= 0,n=node; n=n.parentNode; i ){ <a> if(n==parent){return i;} </a> if(n==document.documentElement){return -1;} // 無限ループを防ぐためにターゲットの親ノードが見つかりません </li> } <br>} </ul> 関数の戻り値はインデックス番号です。エントリ ノードが検索対象の親ノードと同じ (つまり、同じ要素) の場合、戻り値は 0 になります。上方向の検索が <br> などのページ全体のルート ノードに到達し、見つからなかった場合は、-1 を返してループを終了します。 <li><a>戻り値は、String オブジェクトの組み込みのindexOf メソッドと同様です。この関数の鍵となるのは for の 2 番目のパラメーター n=n.parentNode で、これは賢明だと感じます。 </a></li> </ul> </div>