| フォームではなく、文字で表示するポップアップメニューです。
 文字の左にある▼をクリックするとメニューが表示されます。
 開いてるメニューを閉じる場合は、もう一度▼をクリックします。
 また、開くボタンを押せば、一気に全ツリーを開く事ができます。
 閉じるボタンを押せば、一気に全ツリーを閉じる事が出来ます。
 
 サンプルでは同じリンクが2つ合ったりしますが、
実際に使用する時は同じものを2つ置く必要はありません。
 
 ・サンプルを見る
 ・ソースを保存する
 (右クリック→「対象をファイルに保存」or「リンクを名前を付けて保存」して下さい。)
 ・ソースを見る
 ・解説を見る
 ・補足解説を見る
 
 
 
 
 
 [ ソース ]
 
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script language="JavaScript">
<!--//Copyright (C) WEST MiRa http://www.west-mira.jp
	kazu=4;
	taihi=new Array();
	function hyouji(doko){
	if(document.layers)
		{kazu=document.layers.length/2;
		lay_name=document.layers["lay"+doko];
		tit_name=document.layers["title"+doko];
		if(lay_name.visibility == 'show')
			{lay_name.visibility='hidden';
			dotti=1;
			 }
		 else {lay_name.visibility='show';
			tate=tit_name.pageY+tit_name.clip.height;
			yoko=tit_name.pageX;
			lay_name.top=tate;
			lay_name.left=yoko;
			dotti=0;
			}
		if(doko<kazu-1)
			{
			for(i=doko+1; i<kazu; i++){
				tate=document.layers["lay"+doko].clip.height;
				if(dotti == 1)
					document.layers["title"+i].moveBy(0,-tate);
				else 
					document.layers["title"+i].moveBy(0,tate);
				if(document.layers["lay"+i].visibility == 'show')
					{
					if(dotti == 1)
						document.layers["lay"+i].moveBy(0,-tate);
					else 
						document.layers["lay"+i].moveBy(0,tate);
					}
				}
			}
		}
	else if((document.getElementById) && (!document.all))
		{
		lay_name=document.getElementById("lay"+doko);
		if(lay_name.style.visibility == 'visible')
			{lay_name.style.visibility='hidden';
			lay_name.style.display="none";
			}
		 else {lay_name.style.visibility='visible';
				lay_name.style.display="block";
			}
		}
	else if(document.all)
		{
		lay_name=document.all("lay"+doko);
		if(lay_name.style.visibility == 'visible')
			{lay_name.style.visibility='hidden';
			 lay_name.style.display="none";
			 if(navigator.appVersion.indexOf("MSIE 4.")!=-1)
				lay_name.innerHTML=taihi[doko];
			}
		 else {lay_name.style.visibility='visible';
		       lay_name.style.display="block";
			taihi[doko]=lay_name.innerHTML;
		       if(navigator.appVersion.indexOf("MSIE 4.")!=-1)
				lay_name.innerHTML="<br>"+taihi[doko];
			}
		}
	}
	function CloseTree()
		{
		for(i=0; i<kazu; i++)
			{
			if(document.layers)
				{
				if(document.layers["lay"+i].visibility == 'show')
					{
					tate=document.layers["lay"+i].clip.height;
					for(j=i+1; j<kazu; j++)
						document.layers["title"+j].moveBy(0,-tate);
					}
				document.layers["lay"+i].visibility='hidden';
				}
			else if((document.getElementById) && (!document.all))
				{
				document.getElementById("lay"+i).style.visibility='hidden';
				document.getElementById("lay"+i).style.display="none";
				}
			else if(document.all)
				{
				document.all("lay"+i).style.visibility='hidden';
				document.all("lay"+i).style.display="none";
				}
			}
		}
	function OpenTree()
		{
		for(i=0; i<kazu; i++)
			{
			if(document.layers)
				{
				if(document.layers["lay"+i].visibility == 'hide')
					{
					tate=document.layers["lay"+i].clip.height;
					for(j=i+1; j<kazu; j++)
						{
						document.layers["title"+j].moveBy(0,tate);
						document.layers["lay"+j].moveBy(0,tate);
						}
					document.layers["lay"+i].visibility='show';
					}
				}
			else if((document.getElementById) && (!document.all))
				{
				document.getElementById("lay"+i).style.visibility='visible';
				document.getElementById("lay"+i).style.display="block";
				}
			else if(document.all)
				{
				document.all("lay"+i).style.visibility='visible';
				document.all("lay"+i).style.display="block";
				}
			}
		}
	if(document.layers)
		{document.write('<style type="text/css">span{position:absolute;visibility:hidden;}</style>');}
	else if((document.getElementById) && (!document.all))
		{document.write('<style type="text/css">span{position:relative;display:none;}</style>');}
	else if(document.all)
		{document.write('<style type="text/css">span{position:relative;display:none;}</style>');}
//-->
</script>
</head>
<body>
<a href="javascript:CloseTree();">閉じる</a>
<br>
<form><input type="button" value="閉じる" onClick="CloseTree();"></form>
<a href="javascript:OpenTree();">開く</a>
<br>
<form><input type="button" value="開く" onClick="OpenTree();"></form>
<br>
<div id="title0" style="position:relative;visibility:visible;">
<layer name="title0">
<a href="JavaScript:hyouji(0);">▼</a>Front
</layer></div>
<span id="lay0">
<tt>├</tt><a href="../../index.html">JavaScript</a><br>
<tt>├</tt><a href="../../kiso_faq.html">JavaScript FAQ</a><br>
<tt>├</tt><a href="../../index.html">JavaScript</a><br>
</span>
<div id="title1" style="position:relative;visibility:visible;">
<layer name="title1">
<a href="JavaScript:hyouji(1);">▼</a>Contents
</layer></div>
<span id="lay1">
<tt>├</tt><a href="../../index.html">JavaScript</a><br>
<tt>├</tt><a href="../../lib_link.html">Library(Link)</a><br>
<tt>├</tt><a href="../../index.html">JavaScript</a><br>
<tt>├</tt><a href="../../lib_link.html">Library(Link)2</a><br>
</span>
<div id="title2" style="position:relative;visibility:visible;">
<layer name="title2">
<a href="JavaScript:hyouji(2);">▼</a>Link
</layer></div>
<span id="lay2">
<tt>├</tt><a href="../../etc_link.html">Link</a><br>
<tt>├</tt><a href="../../etc_link.html">Link2</a><br>
</span>
<div id="title3" style="position:relative;visibility:visible;">
<layer name="title3">
<a href="JavaScript:hyouji(3);">▼</a>Contents
</layer></div>
<span id="lay3">
<tt>├</tt><a href="../../index.html">JavaScript</a><br>
<tt>├</tt><a href="../../lib_link.html">Library(Link)</a><br>
<tt>├</tt><a href="../../index.html">JavaScript</a><br>
<tt>├</tt><a href="../../lib_link.html">Library(Link)2</a><br>
</span>
 ・
 ・
 ・
</body></html>
 
 [ 解説 ]
 
 まず幾つポップアップメニューを設置するのか、またポップアップメニュー内の項目は幾つ設置するのか決めて下さい。
 
 幾つツリーを用意するか決めたら、ソースの上から5行目にある
 kazu=4;
 に、数を記入します。
 
 サンプルでは4つのポップアップメニューを使用していますので、
4の数字が入っています。
 もし、使用する数が変われば、その都度書き替えて下さい。
 
 次に、ソースの下の方をご覧下さい。
 
 <div id="title0" style="position:relative;visibility:visible;">
 <layer name="title0">
 <a href="JavaScript:hyouji(0);">▼</a>Front
 </layer></div>
 <span id="lay0">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../kiso_faq.html">JavaScript FAQ</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 </span>
 
 と書かれた部分があります。
 1つのツリーのHTML上の構成は、この行で成り立っています。
 
 サンプルは4つのポップアップメニューが設置されていますので、同じような複数行がが後3つほどありますね。
 
 「Front」と書かれた部分は、ポップアップメニューの見出しに当たります。
 お好きな文字をご指定下さい。タグなどで文字の大きさを変更する事も可能です。
 
 「Front」と書かれた部分の3行下には、リンクタグがあります。
 サンプルでは、「Front」のツリーには3つのリンクがありますから、
3行のリンクタグがあります。
 
 その部分は、URL指定、リンクの名前などをお好きなようにご変更下さい。
 リンクの数を増やす事も可能です。
 
 リンクを増やしたい場合は、リンク行を1行そのまま増やし、必要な情報を書き換えるだけです。
 例えば、「Front」のツリーにリンクを1つ追加する場合は、以下のようになります。
 
 
 反対にツリー内のリンクを減らしたい場合は、1行増やしたのと同じ要領で、
1行削除します。| 変更前 | 
|---|
 | <div id="title0" style="position:relative;visibility:visible;"> <layer name="title0">
 <a href="JavaScript:hyouji(0);">▼</a>Front
 </layer></div>
 <span id="lay0">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../kiso_faq.html">JavaScript FAQ</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 </span>
 |  | 変更後 | 
|---|
 
| <div id="title0" style="position:relative;visibility:visible;"> <layer name="title0">
 <a href="JavaScript:hyouji(0);">▼</a>Front
 </layer></div>
 <span id="lay0">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../kiso_faq.html">JavaScript FAQ</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript3</a><br>
 </span>
 | 
 
 ツリー自体を増やしたい時は、1つのツリーを構成している複数行を丸ごと増やし、
必要情報を書き換えます。
 
 ただし、この時には注意が必要です。
 
 サンプルの「Front」のツリーを例に挙げてみてみましょう。
 
 <div id="title0" style="position:relative;visibility:visible;">
 <layer name="title0">
 <a href="JavaScript:hyouji(0);">▼</a>Front
 </layer></div>
 <span id="lay0">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../kiso_faq.html">JavaScript FAQ</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 </span>
 
 を、よく見ていただきますと、
 1行目の左の方に「title0」、
 2行目の左に「title0」
 3行目の真ん中に「0」、
 4行目の左の方に「lay0」
 と言う箇所があります。
 
 同じ様な箇所が、他のツリーにもありますが、少しずつ違う部分があります。
 どこが違うのか、2番目の「Contents」のツリーを見てみましょう。
 
 <div id="title1" style="position:relative;visibility:visible;">
 <layer name="title1">
 <a href="JavaScript:hyouji(1);">▼</a>Contents
 </layer></div>
 <span id="lay1">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)2</a><br>
 </span>
 
 よく見ると、
 1行目の左には「title1」
 2行目の左には「title1」
 3行目の真ん中には「1」
 4行目の左には「lay1」
 となっています。
 
 おわかりですか?
 数字が、1つずつ繰り上がっています。
 
 ツリーを増やす場合、これらを踏まえ、必ず数値部分を繰り上げていく必要があります。
 
 では、実際にサンプルに1つツリーを増やすとどうなるか、
実例を挙げてみましょう。
 
 
 ツリーの数を減らす場合は、増やしたのと同じ要領で、1つのツリーを構成している複数行を削除します。| 変更前 | 
|---|
 | <div id="title0" style="position:relative;visibility:visible;"> <layer name="title0">
 <a href="JavaScript:hyouji(0);">▼</a>Front
 </layer></div>
 <span id="lay0">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../kiso_faq.html">JavaScript FAQ</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 </span>
 ……
 
 <div id="title3" style="position:relative;visibility:visible;">
 <layer name="title3">
 <a href="JavaScript:hyouji(3);">▼</a>Contents
 </layer></div>
 <span id="lay3">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)2</a><br>
 </span>
 |  | 変更後 | 
|---|
 
| <div id="title0" style="position:relative;visibility:visible;"> <layer name="title0">
 <a href="JavaScript:hyouji(0);">▼</a>Front
 </layer></div>
 <span id="lay0">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../kiso_faq.html">JavaScript FAQ</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 </span>
 ……
 
 <div id="title3" style="position:relative;visibility:visible;">
 <layer name="title3">
 <a href="JavaScript:hyouji(3);">▼</a>Contents
 </layer></div>
 <span id="lay3">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)2</a><br>
 </span>
 
 <div id="title4" style="position:relative;visibility:visible;">
 <layer name="title4">
 <a href="JavaScript:hyouji(4);">▼</a>Contents
 </layer></div>
 <span id="lay4">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)2</a><br>
 </span>
 | 
 
 実際にどうなるのか?
 以下の例をご覧下さい。
 
 
 閉じるボタンは、サンプルでは2つご用意しております。| 変更前 | 
|---|
 | <div id="title0" style="position:relative;visibility:visible;"> <layer name="title0">
 <a href="JavaScript:hyouji(0);">▼</a>Front
 </layer></div>
 <span id="lay0">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../kiso_faq.html">JavaScript FAQ</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 </span>
 
 <div id="title1" style="position:relative;visibility:visible;">
 <layer name="title1">
 <a href="JavaScript:hyouji(1);">▼</a>Contents
 </layer></div>
 <span id="lay1">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)2</a><br>
 </span>
 
 <div id="title2" style="position:relative;visibility:visible;">
 <layer name="title2">
 <a href="JavaScript:hyouji(2);">▼</a>Link
 </layer></div>
 <span id="lay2">
 <tt>├</tt><a href="../etc_link.html">Link</a><br>
 <tt>├</tt><a href="../etc_link.html">Link2</a><br>
 </span>
 
 <div id="title3" style="position:relative;visibility:visible;">
 <layer name="title3">
 <a href="JavaScript:hyouji(3);">▼</a>Contents
 </layer></div>
 <span id="lay3">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)2</a><br>
 </span>
 |  | 変更後 | 
|---|
 
| <div id="title0" style="position:relative;visibility:visible;"> <layer name="title0">
 <a href="JavaScript:hyouji(0);">▼</a>Front
 </layer></div>
 <span id="lay0">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../kiso_faq.html">JavaScript FAQ</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 </span>
 
 <div id="title1" style="position:relative;visibility:visible;">
 <layer name="title1">
 <a href="JavaScript:hyouji(1);">▼</a>Contents
 </layer></div>
 <span id="lay1">
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)</a><br>
 <tt>├</tt><a href="../../index.html#JavaScript">JavaScript</a><br>
 <tt>├</tt><a href="../lib_link.html">Library(Link)2</a><br>
 </span>
 
 <div id="title2" style="position:relative;visibility:visible;">
 <layer name="title2">
 <a href="JavaScript:hyouji(2);">▼</a>Link
 </layer></div>
 <span id="lay2">
 <tt>├</tt><a href="../etc_link.html">Link</a><br>
 <tt>├</tt><a href="../etc_link.html">Link2</a><br>
 </span>
 
 | 
 普通のリンクタグを使用するタイプと、フォームのボタンを使用するタイプです。
 
 ソース内の、真ん中からやや下あたり、ボディタグの下にボタンのソースがあります。
 以下の部分です。
 
 <a href="javascript:CloseTree();">閉じる</a>
 <br>
 <form><input type="button" value="閉じる" onClick="CloseTree();"></form>
 
 上の行が普通のリンクタグ、下がフォームのボタンになっています。
 
 どちらかお好きな方をご利用下さい。
 2つの内、不要なボタンは削除してご利用下さい。
 
 開くボタンは、サンプルでは2つご用意しております。
 普通のリンクタグを使用するタイプと、フォームのボタンを使用するタイプです。
 
 ソース内の、真ん中からやや下あたり、ボディタグの下にボタンのソースがあります。
 以下の部分です。
 
 <a href="javascript:OpenTree();">開く</a>
 <br>
 <form><input type="button" value="開く" onClick="OpenTree();"></form>
 
 上の行が普通のリンクタグ、下がフォームのボタンになっています。
 
 どちらかお好きな方をご利用下さい。
 2つの内、不要なボタンは削除してご利用下さい。
 
 |