クリックすると表示されるメニューを作成するには?

[上に] [前に] [次に]
yama 2000/03/14(火) 18:59:36
はじめまして。
現在、javascriptを使用したメニューを作成しています。
タイトル部に触れるとmenu1のテーブルが出てきます。
しかし、何故かネスケでは表示されません。記述がおかしいのでしょうか?
また、IE、NN 両ブラウザに対応するこのようなメニューを作成する方法などはあるのでしょうか?
何か参考になるようなサイト等ありましたらお願いします。

<script language="javascript">
function fmenu1(){
if (menu1.style.display=="none")
menu1.style.display="block";
else
menu1.style.display="none";}
</script>

<table width="240">
<tr>
<td width="240">
<div onMouseDown="fmenu1()" style="cursor: hand; width: 240; height: 14">タイトル</div>
</td>
</tr>
</table>
<table id=menu1 style="display: none" border=0 width="240">
<tr>
<td width="240">
メニュー1<br>
メニュー2<br>
</tr>
</table>

無責任官庁 2000/03/15(水) 09:12:42
確認事項その1(イベントハンドラ)
まず、とほほさんの「HTMLリファレンス」のオマケにある
「HTMLサポート状況一覧」を見てみてください。
そうすると、<div onMouseDown...> は、NNは完全未対応だという事が
分かります。

確認事項その2(スクリプト)
とほほさんの「JavaScript入門」のオブジェクトの一覧を見ましたか?
elements.style.display がありません。「IE4.0のダイナミックHTML」の項目
を見ると…あります。そうです。このプロパティは IE4 以降専用なんです。

以上の事から、NN では動作しないことになります。
そんで、NN でも動作させるサンプルですけども…
http://www5.airnet.ne.jp/martin/index1.html
ここのメニューの「DynamicZone」→「CrossBrowserFactory」にある、
http://www5.airnet.ne.jp/martin/CrossBrowser/index.html
「このページで使っているフォルダ展開型の関数」
ってやつがそうかな。IE/NN どっちでも動作します。

ちなみに…NN では、1ページ上の HTML を動的に書き換え・置き換えする
ような操作は基本的に不可能だと思った方がいいかもしれません。
NN でそれをやるには、レイヤを重ねるしかないかと思います。
IE のように簡単に出来ないのはしょうがないですね。

#なお、IE/NN ともにver4 以降が、この話の対象です。

のぶT [E-Mail] [HomePage] 2000/03/15(水) 17:08:22
InternetExproler4.x,NetscapeCommunicator4.x以降のみですが、
まずレイヤを用意しておきます。
イベントハンドラで下の関数が動くようにします。
laynameには上で用意したレイヤー名が、
contには表示させたいテキストなり、画像なり、htmlなりを
入れます。
function mywrite(layname,cont){                 //表示処理
        if(document.layers){
                document.layers[layname].document.open();
                document.layers[layname].document.write(cont);
                document.layers[layname].document.close();
        }
        if(document.all){
                document.all(layname).innerHTML = cont;
        }
}

[上に] [前に] [次に]