クリックすると表示されるメニューを作成するには?
[上に]
[前に]
[次に]
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;
}
}
[上に]
[前に]
[次に]