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