+のgifをクリックすると-のgifと詳しい表示が出る様にHTMLを書いたのですが、
表示された後で閉じると、その+のgifが再表示されません。
何が足りなくてそうなってしまうのでしょうか?
また、親メニューの+が-になっている時、gifの-を表示させる方法を教えてやって下さい…。
よろしくお願いします。
<body bgcolor="#000000" text="#ffffff" link="#000000" alink="#808080" vlink="#ff0000">
<div id='div1' style="position:absolute; left:10; top:100; width:250;">
<a id="menu1" href="#" onClick="onmenu(this,'menu11');return false"
style="text-decoration:none;">
<img src="p.gif" alt="+" border="0"></a><font size="+2">BBS</font>
<div id="menu11" style="position:absolute; left:-2; top:16; visibility:hidden;">
├<a href="http://…" target="_top"
style="text-decoration:none;">
<img src="m.gif" alt="-" border="0"></a> aBBS<br>
├<a href="http://…" target="_top"
style="text-decoration:none;">
<img src="m.gif" alt="-" border="0">
</a> bBBS<br>
└<a href="http://…" target="_top"
style="text-decoration:none;">
<img src="m.gif" alt="-" border="0"></a> cBBS
</div></div></div>
</body>
No.1ベストアンサー
- 回答日時:
メインメニューをクリックする度にサブメニューの表示非表示が切り替わるということでしょうか?
書かれているソースだけでは原因が何であるかわかりませんが、
私が以前似たようなものを作った時は次のようにしました。
+のgifがクリックされた時点で、id="menu11"の状態(visibleかhiddenか)を判定して命令を分岐します。
id="menu11"がvisibleならhiddenに、hiddenならvisibleに。
↓参考になれば良いのですが。(Netscape6では使えませんでした。)
--------------------------------------------------------------------
<HTML>
<HEAD>
<TITLE>サブメニュー表示非表示</TITLE>
<SCRIPT language="JavaScript">
<!--
function onmenu(){
//IE用
if(document.all){
if(document.all['menu11'].style.visibility == 'hidden'){ //サブメニュー非表示の場合
document.all['menu11'].style.visibility = 'visible' //サブメニューを表示
}
else{ //サブメニュー表示中
document.all['menu11'].style.visibility = 'hidden' //サブメニューを非表示
}
}
//NN用
if(document.layers){
if(document.layers['menu11'].visibility == 'hide'){ //サブメニュー非表示の場合
document.layers['menu11'].visibility = 'show' //サブメニューを表示
}
else{ //サブメニュー表示中
document.layers['menu11'].visibility = 'hide' //サブメニューを非表示
}
}
}
// -->
</SCRIPT>
</HEAD>
<BODY bgcolor="#FFFFFF" text="#000000">
<DIV id="div1" style="position:absolute; left:10; top:100; width:250; visibility: visible>
<A href="javascript:void(0);" onClick="onmenu()"><IMG src="p.gif" alt="+" border="0"><FONT size="+2">BBS</FONT>
<DIV id="menu11" style="position:absolute; left:-2; top:16; visibility: hidden">
├<A href="http://..." target="_top" style="text-decoration:none;">
<IMG src="m.gif" alt="-" border="0"></A> aBBS<BR>
├<A href="http://..." target="_top" style="text-decoration:none;">
<IMG src="m.gif" alt="-" border="0"></A> bBBS<BR>
└<A href="http://..." target="_top" style="text-decoration:none;">
<IMG src="m.gif" alt="-" border="0"></A> cBBS
</DIV></DIV>
</BODY>
</HTML>
有り難うございます!動作確認しました所、たしかに希望通り表示されました。
スクリプトの定義が足りなかった様です。
それで、重ねてお願いなのですが、これの下に別の親メニューとサブメニューを増やしたい
のですが、増やし方をお教え願えますでしょうか?
本を片手にいじってみたのですが、親が増やせてもサブが表示されなかったりして
どうしても上手く行きません(T_T)。
どうかよろしくお願いいたします…。
No.2
- 回答日時:
1番上のメニューを親メニュー。
2番目、3番目をそれぞれ子メニュー、孫メニューとして説明します。
子メニューと孫メニューのレイヤーをネストして(子孫レイヤー)、
親メニューのクリックで子孫レイヤーを表示できるようにすれば良いと思います。
さらに子孫レイヤー内でも子メニューのクリックで孫メニューレイヤーを表示するようにします。
下のサンプルを実行してもらえばわかると思いますが、
子メニューが複数ある場合、孫メニューを表示した時に、他の子メニューと重なって表示されないように他の子メニューレイヤーを移動しなければなりません。
少しややこしいですが、子メニューをクリックした時点で孫メニューレイヤーの表示非表示を判定すると同時に孫メニューレイヤーの高さを求めます。(offsetHeightを使用)
ここで求めた孫メニューレイヤーの高さ分だけ、下段にある子メニューレイヤーを下方向に移動させます。
子メニューをもう一度クリックすると、今度は逆方向に移動します。
また、孫メニュー表示中に、親メニューをクリックしても子メニューが非表示にならないように変数xyzの値で孫メニューの表示非表示を判定します。
孫メニューがひとつ表示されるとxyzに+1、非表示にされると-1の値を送るようにします。
xyzの値が0の時は孫メニューがすべて非表示の状態なので、その時だけ親メニューのクリックで子メニューを非表示にできます。
親メニューが複数ある場合も、これまでの応用で他のレイヤーを移動させれば良いです。
WindowsのIE5.5でしか動作確認していません。
Netscape用のスクリプトは省略しています。
<HTML>
<HEAD>
<TITLE>サブメニュー表示非表示</TITLE>
<SCRIPT language="JavaScript">
<!--
var xyz = 0; //孫メニューの表示状態を判定
function showmenu(komenu_num,ppp){ //孫メニューの表示切替
a = komenu_num + '1';
y_position = document.all['menu'+a].offsetHeight; //孫メニューの高さを求める
//IE用
if(document.all){
if(document.all['menu'+a].style.visibility == 'hidden'){ //孫メニュー非表示の場合
document.all['menu'+a].style.visibility = 'visible' //孫メニューを表示
xyz = xyz+1;
for(n=1;n<=ppp;n++){
otMenuNo = komenu_num+n;
document.all['menu'+otMenuNo].style.posTop += y_position //下段の子メニューの移動
}
}
else{ //孫メニュー表示中
document.all['menu'+a].style.visibility = 'hidden' //孫メニューを非表示
xyz = xyz-1;
for(n=1;n<=ppp;n++){
otMenuNo = komenu_num+n;
document.all['menu'+otMenuNo].style.posTop -= y_position //下段の子メニューの移動
}
}
}
}
function onmenu(submenu_num){ //子メニューの表示切替
//IE用
if(document.all){
if(document.all['menu11'].style.visibility == 'visible'){ //子メニュー表示中の場合
if(xyz == 0){ //孫メニュー非表示の場合
for(i=1;i<=submenu_num;i++){
document.all['menu1'+i].style.visibility = 'hidden' //子メニューを非表示
}
}
else{
for(i=1;i<=submenu_num;i++){
document.all['menu1'+i].style.visibility = 'visible' //子メニューを表示のまま
}
}
}
else{ //子メニュー非表示の場合
for(i=1;i<=submenu_num;i++){
document.all['menu1'+i].style.visibility = 'visible' //子メニューを表示
}
}
}
}
// -->
</SCRIPT>
</HEAD>
<BODY bgcolor="#FFFFFF" text="#000000">
<DIV id="div1" style="position:absolute; left:10; top:10; width:250; visibility: visible>
<A href="javascript:void(0);" onClick="onmenu(3)"><FONT size="+2">BBS</FONT>
</DIV>
<DIV id="menu11" style="position:absolute; left:2px; top:35px; width:250; visibility: hidden">
<A href="javascript:void(0);" onClick="showmenu(11,2)">+子メニュー</A>
<DIV id="menu111" style="position:absolute; left:5px; top:20px; visibility: hidden">
<A href="javascript:void(0);">++孫メニュー</A><BR>
<A href="javascript:void(0);">++孫メニュー</A> </DIV>
</DIV>
<DIV id="menu12" style="position:absolute; left:2px; top:60px; width:250; visibility: hidden">
<A href="javascript:void(0);" onClick="showmenu(12,1)">+子メニュー</A>
<DIV id="menu121" style="position:absolute; left:5px; top:20px; visibility: hidden">
<A href="javascript:void(0);">++孫メニュー</A><BR>
<A href="javascript:void(0);">++孫メニュー</A><BR>
<A href="javascript:void(0);">++孫メニュー</A> </DIV>
</DIV>
<DIV id="menu13" style="position:absolute; left:2px; top:85px; width:250; visibility: hidden">
<A href="javascript:void(0);" onClick="showmenu(13,0)">+子メニュー</A>
<DIV id="menu131" style="position:absolute; left:5px; top:20px; visibility: hidden">
<A href="javascript:void(0);">++孫メニュー</A> </DIV>
</DIV>
</BODY>
</HTML>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【CSS】floatで左右に並べた...
-
divのheight指定で画面一杯に表...
-
クリッカブルマップとインライ...
-
3点リーダーの作り方
-
CSSでdivの縦幅を指定する方法
-
htmlのstyleのposition:relativ...
-
positionのrelativeとabsolute...
-
レイアウトが崩れないようにす...
-
オンマウス時に別画像を上に重...
-
HTMLですCSSです この画像のよ...
-
YES or NO形式で進んで行く、タ...
-
HTMLですCSSです 画像のように...
-
MAX関数を使ってからLEFT JOIN...
-
htmlの記述で link rel=styles...
-
画像の上に画像リンクを貼る方法
-
javascriptテキストBOX色を元に...
-
読み込んだQRコードをフォーム...
-
複数画像のランダム複数表示(...
-
Gifアニメ、最後のコマに行った...
-
Slick.jsのオプションrtlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ctrl+F(検索)の窓を出したいの...
-
フッター上部に謎の隙間
-
【CSS】floatで左右に並べた...
-
HTMLですCSSです この画像のよ...
-
css固定したフッターが本文と重...
-
CSS <div>の入れ子が反映さ...
-
スクロール可能なチェックボックス
-
textareaで入力した文字を改行...
-
オンマウス時に別画像を上に重...
-
文字を固定したいのですが…
-
スタイルシートで画面を上下に...
-
チェックボックスの背景色って...
-
フッターの下に隙間ができてしまう
-
文字をクリックしたら別の文字...
-
大分類・中分類・小分類
-
HTMLですCSSです 画像のように...
-
CSSでdivのheightを動的に
-
★★★フッター最下部固定/スクロ...
-
離れた場所にマウスオーバーで...
-
htmlのstyleのposition:relativ...
おすすめ情報