フレームページで、JavaScriptで文字(下の場合は「親メニュー」)クリックすると
開閉するツリーメニューを使用したいと思っています(フレームあり・なしは訪問者の自由で選べるようにしています)。
http://himajin.moo.jp/menu/menu.html ここや、
http://www.openspc2.org/reibun/javascript/#8 こちらの05・06・63などを参考にして、
自分なりにシンプルに変更してみたのですが、記述に問題点などはありますでしょうか?
以下が、そのソースです(簡略化しています)。
<html>
<head>
<script type="text/JavaScript">
<!--
function treeMenu(tName) {
tMenu = document.getElementById(tName).style;
if(tMenu.display == 'none') tMenu.display = "block";
else tMenu.display = "none";
}
//-->
</script>
</head>
<body>
<a href="JavaScript:treeMenu('treeMenu1')">親メニュー</a>
<div id="treeMenu1" style="display:none">
<li><a href="a.html" target="main">子メニュー</a></li>
<li><a href="b.html" target="main">子メニュー</a></li>
</body>
</html>
また、「document.all」はIE専用だと聞いたので「document.getElementById」
に変更してみたのですが、これでほかのブラウザでも問題は無く使用できますか?
JavaScriptは初めてなのであまり自信がありません。
IEとFirefoxでは動作確認済みです。よろしくお願いします。
No.3ベストアンサー
- 回答日時:
個人的にはliを使うならulの子供で使います。
上にマージンができてしまうのは、margin-top:0px;を
しておけばよいでしょう。
あと、スキキライになりますが、こんかいのif条件は
三項演算子を使ったほうがわかりやすいかも・・・。
<html>
<head>
<script type="text/JavaScript">
<!--
function treeMenu(tName){
tMenu = document.getElementById(tName).style;
tMenu.display=(tMenu.display=='none')?"block":"none";
}
//-->
</script>
</head>
<body>
<a href="JavaScript:treeMenu('treeMenu1')">親メニュー</a>
<ul id="treeMenu1" style="display:none;margin-top:0px;">
<li><a href="a.html" target="main">子メニュー</a></li>
<li><a href="b.html" target="main">子メニュー</a></li>
</ul>
</body>
</html>
(実際に本運用の際はcssを外部化したりしたほうので
しょうけど、とりあえずは今回はわかりやすく直接
タグに指定をいれてあります)
ちなみに、divにdisplay:noneを直接書きこんでますが
このままではjavascriptなしのブラウザでは、子メニューが
まったく表示されなくなりますが、よろしいのでしょうか?
<li>タグを使用する場合には<ul>も必要だということを失念していました。
『tMenu.display=(tMenu.display=='none')?"block":"none";』
の部分も、とても分かりやすいです。
少し書き足すだけでいいので、やってみますね。
子メニューはどうしても表示させたいわけではないのですが、
(だったらやらなければいいのですが^^;)#2の方も
仰るように、初めから表示させておいて、訪問者の好みで
非表示にさせるという手もありますね。
回答ありがとうございました。とても参考になりました!
No.2
- 回答日時:
getElementById は、今頃のブラウザでは大抵使えると思いますが、
使えないブラウザでエラーになってしまうことが心配なら、
if(document.getElementById){//使える
}
の様にすればいいかもしれません。
また、スクリプトが動作しない環境(getElementByIdが使えない場合も含む)でメニューを開く方法がなくなるということに危惧があるなら、
デフォルトの状態を開いてある状態にして、onload で閉じるような感じにした方がいいのかもしれません。
getElementByIdが大抵のブラウザで使用できるとのことなので、少し安心しました。
そうですね。if文を使うなどして、エラー回避をするのもいいかもしれません。
メニューは、どうしても開閉できないとダメ、というわけではないので、
もう少し考えてみることにしますね。
回答ありがとうございました。
No.1
- 回答日時:
出現するコンテナの<div>タグが閉じてないように見えますが。
それは簡略化の際のケアレスミス?
この回答への補足
すいません、簡略化した際に書き忘れてしまったようです。
実際の(ホームページ用の)ソースには</div>は入っています。
私のとじ忘れでした^^;
</div>があるものと思って見ていただけると幸いです。
本当に申し訳ありません!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリックした<a>タグのみにClas...
-
文字と数字が混在する要素のsor...
-
ajaxローディングで取得したデ...
-
JavaScriptのクッキーによるリ...
-
jqueryのsortableで一部ソート...
-
助けてください… jQuery 左右に...
-
ネストされたチェックボックス...
-
タブ切り替えの初期表示に関して
-
C# ブラウザの自動クリック
-
質問に答えていくと、回答によ...
-
複数の画像をランダム(シャッ...
-
アコーディオンが思い通りに動...
-
固定ナビのJqueryのアコーディ...
-
jQueryを使用したタブの改造
-
マウスオーバーで開閉できるア...
-
JQueryタブのアクティブ アン...
-
戻ってきた時ツリーメニューが...
-
「jQuery」アコーディオンメニ...
-
JavaScriptで、?マークとコロ...
-
JqueryFileTree.js でフォルダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
javascriptでEnterキーをtabキ...
-
クリックした<a>タグのみにClas...
-
チェックボックスに入っている...
-
【javascript で動的に a タグ...
-
jquery ドロップダウンメニュー...
-
「jQuery」アコーディオンメニ...
-
jQueryのeqで最後からn番目以降...
-
jQueryで、リンクURLの一致を確...
-
ネストされたチェックボックス...
-
javascriptで、クリックしたら...
-
文字と数字が混在する要素のsor...
-
onmouseoverの表示切り替えが上...
-
jQueryでネスト構造の<li>がク...
-
タブメニューを上下に設置
-
<li></li>の数を制限
-
jQuery多層式アコーディオンメ...
-
CSSとJavaScriptを使ってドロッ...
-
複数の画像をランダム(シャッ...
-
どの<li><a> が押されたか判別...
おすすめ情報