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