ツリー式リスト構造って言うのは、要するに
- メインコンテンツ
- プラモデル
- レビュー
- サブコンテンツ
- Perl
- Web Tips
- フォーラム
- 掲示板
- チャット
こんなやつです。ソースは
<ul> <li>メインコンテンツ <ul> <li>プラモデル</li> <li>レビュー</li> </ul> </li> <li>サブコンテンツ <ul> <li>Perl</li> <li>Web Tips</li> </ul> </li> <li">フォーラム <ul> <li>掲示板</li> <li>チャット</li> </ul> </li> </ul>こんなんなってます。
これに手を加えて、少し視覚的な変化を加えたいと思います。
JavaScriptと、CSSの「display」属性を利用して、関数setvisibleを定義します。
ソースはこのような感じ。
function setvisible(obj){
if(obj.style.display == "none"){
obj.style.display = "list-item";
} else {
obj.style.display = "none";
}
}
obj.style.displayの部分が、オブジェクトに対して、スタイルシートを参照/設定している部分です。
ソースはこのような感じ。
<ul> <li><span onClick="setvisible(child1)">親要素1</span> <ul id="child1"> <li>親要素1 - 子要素1</li> <li>親要素1 - 子要素2</li> </ul> </li> <li><span onClick="setvisible(child2)">親要素2</span> <ul id="child2"> <li>親要素2 - 子要素1</li> <li>親要素2 - 子要素2</li> </ul> </li> <li><span onClick="setvisible(child3)">親要素3</span> <ul id="child3"> <li>親要素3 - 子要素1</li> <li>親要素3 - 子要素2</li> </ul> </li> <li><span onClick="setvisible(child4)">親要素4</span> <ul id="child4"> <li>親要素4 - 子要素1</li> <li>親要素4 - 子要素2</li> </ul> </li> </ul><li>タグにもonClickは指定できますが、子要素をクリックしてもツリーが閉じてしまうので、
それを無くすためにいったん<span>タグでくくって、子要素にonClickが適用されないようにしています。
サンプルはこちら。