FCafe  整列リストのツリー化

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

 勿論、前二記事のスクリプトは 「最近の記事」や「月別アーカイブ」をもツリー化可能です

SAMPLE

しかし、ここでちょっと考えてみてください。 上に挙げた二つのリストは コメントやTBのそれとは異なり、 あらかじめそれに基づいて分類すべき要素である 「年月日」 の順に表示されるものであります。 で、あるならば 面倒なソートなど行わずとも、より簡潔な処理でツリー化が可能なのではないでしょうか。

と言う訳で 『(グループ順に)連続して表示されるリスト』のツリー化について考えてみました。
また、今回のサンプルではスクリプト無効時にgroup名要素を表示させる( 要素を aタグの外に書く )仕様としてみました。

SAMPLE


【 設置法 】  以下のスクリプトを HTMLソース末尾 (

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
タグ手前)に貼ります。
( 対象となるリストの構造は元記事と同様です )

<script type="text/javascript"><!--
function Tree(ID) {
 var A=document.getElementById(ID).getElementsByTagName('A');
 var I="";  var E=""; var L=A.length;
 for (i=0;i<L;i++){
  if (A[i].title!=E){  if (i>0){I+='</p>'}
    E=A[i].title; I+='<p><b>'+E+'</b><br />' }
  I+='・<a href="'+A[i].href+'">'+A[i].innerHTML+'</a><br />';
 } document.getElementById(ID).innerHTML=I+'</p>';
}
if (document.getElementById) {Tree('ID名1');Tree('ID名2'); ・・・}
//--></script>
 
 

【 解 説 】  日別にツリー化される「recent」、年別にツリー化される「archive」 ( 今の所これ以外の要素でのツリー化は困難か無意味でしょう )。  これらリストでは(上述したように)各項目を整列させる必要はありません。 ツリー化関数は単独(一重)のループで完結してしまいます。
blogのナビリスト程度では前記事のスクリプトとの差は体感できないでしょうが、大規模なリストの場合は結構高速化できるかもしれません。
( お気づきの方もいらっしゃると思いますが テンプレートLIST は titlelist を同様の発想でグループ分けしたものであると言えます)

  尤も、十行前後のナビリストをツリー化する為に複数の関数(スクリプト)を用意するのが「効率的」と言えるかどうかは別問題でしょう。  ( 個人的には昨年の自分の記事のように 「一つのスクリプトで全てのリストをツリー化する」, という方がスマートであるように思えます )
・・・まあ、特集月間ということで。  何かの参考になれば幸いです。

  私の場合は プラグイン単位での御提供、という別事情もあるワケですが ^^

Comment


.  
HN Title URL PW secret

TrackBack http://pcafe.blog3.fc2.com/tb.php/332-4d632832

Shown after Admisson
.

≫ 外部要素によるツリー化 リストのツリー化(2) ≪

2006 / 06 / 14  Wed
Navigation   
Comment 0 / TB 0 / Edit
Designed by Daniel Corporation . all rights renounced
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。