• ベストアンサー

メニューの折りたたみがFirefoxではうまく動かない

いつも親身なアドバイスで助けていただいています。 今回も多分初歩的なミスとは思うのですが、どうにも行き詰ってしまったので助けていただけないでしょうか。 メニューの折りたたみをしたくて、以下のページを参考にhtmlを作成しました。 http://1kb-sozai.com/kowaza/tagu26.html ファイルには以下のように記述しました。 #------------head部分 <script type="text/javascript" language="javascript"> <!-- function expand(id) { if (id.style.display == "none") { id.style.display = ""; } else { id.style.display = "none"; } window.event.cancelBubble = true; } // --> </script> #------------body部分 <h4 onclick="expand(db_01);">Discription. (&laquo; click)</h4> <div id="db_01" style="display:none" class="dis">解説文。</div> するとIE7では問題なく動いたのですが、Firefox3.05では全く反応しませんでした。 前述の参考にしたサイトはちゃんとFirefoxも動いていたので、明らかに私の記述ミスなのですが、問題点を見つけることができなくて困っています。 どなたかアドバイスをお願いできないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

オブジェクトの渡し方に問題ありそうですけど・・・ こんな風にしたほうがよいですよ <script type="text/javascript"> function expand(objID) { var obj=document.getElementById(objID); obj.style.display=obj.style.display=="none"?"":"none"; } </script> <h4 onclick="expand('db_01');">Discription. (&laquo; click)</h4> <div id="db_01" style="display:none" class="dis">解説文。</div>

N_moon
質問者

お礼

アドバイスありがとうございました。 残念ですがいただいたスクリプトでもうまく動きませんでした。 先にアドバイスくださった方のおっしゃるように、記述以外の部分に問題があるのかもしれません。 原因はわからないままですが、最終的に別のQ&Aで示されていたスクリプトにすることで解決しました。 ありがとうございました。 http://oshiete1.watch.impress.co.jp/qa3992914.html?ans_count_asc=1

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5083/13283)
回答No.1

私の環境(Firefox3.0.5 - Windows Vista)で書かれているソースを実行すると「Discription」をクリックすると「解説文」が出たり消えたりしてます。 記載された部分以外に問題があるのではないですか?

N_moon
質問者

お礼

アドバイスありがとうございました。 ここに記述した以外のタグ(おもにjavascript関係)をひとつづつ削除して試してみたのですが、結局動かないままでした。 最終的に別のQ&Aで示されていたスクリプトにすることで解決しました。 ありがとうございました。

関連するQ&A

  • 収納メニューについて教えてください。

    以下のような階層構造で収納メニューを作りたいのですが記述の仕方がわかりません。  A  ┣A-1   ┣A-1-1   ┣A-1-2  ┣A-2   ┣A-2-1   ┣A-2-2  ┗A-3   ┣A-3-1   ┣A-3-2 最初はAのみが表示されていて、AをクリックするとA-1、A-2、A-3、と表示される。 A-1をクリックするとA-1-1、A-1-2が表示されるようにしたいのです。 実際にハイパーリンクが繋がっているのはA-1-1、A-1-2の最下層の項目だけです。 以下の記述を参考にhtmlをくんでいたのですが、二重の階層構造にする方法がわかりませんでした。 わかる方、どうか教えてください。 <head> <script type="text/javascript"> <!-- function expand(id) { if (id.style.display == "none") { id.style.display = "";} else {id.style.display = "none";} window.event.cancelBubble = true;} // --> </script> </head> <body> <span class="list" onclick="expand(a);" style="cursor:hand;">A</span><div id="a" style="display:none"> ┣<a href="tagu.html" target=_blank><FONT size="2">A-11</FONT></a><br>   ┣<a href="tagu.html" target=_blank><FONT size="2">A-2</FONT></a><br>   ┗<a href="tagu.html" target=_blank><FONT size="2">A-3</FONT></a> </div> </body>

  • リンクメニュー収納を2つ以上つくりたいのですが

    こんにちは。今、ホームページを作っています。javascriptで上手くいかない点があるので、質問させていただきます。回答よろしくお願い致します。 文字をクリックしたら下にメニューが表示されるようにしたく、<head>タグ内に <script type="text/javascript"> <!-- function expand(id) { if (id.style.display == "none") { id.style.display = "";} else {id.style.display = "none";} window.event.cancelBubble = true;} // --> </script> <body>タグ内に <span class="list" onclick="expand(a);" style="cursor:hand;">【項目1】</span><div id="a" style="display:none"> <a href="リンクしたいURL">内容1</a><br> <a href="リンクしたいURL">内容2</a><br> <a href="リンクしたいURL">内容3</a> </div> としています。これが1つだと問題なく表示されるのですが、この下に<span class="list" onclick="expand(a);" style="cursor:hand;">【項目2】</span><div id="a" style="display:none">…など2つ以上続けるとエラーが出てしまい上手く表示されません。 出来れば、 【項目1】   内容1    ←【項目1】をクリックすると表示   内容2    ←   内容3…   ← 【項目2】   内容4…   ←【項目2】をクリックすると表示 【項目3】   内容5…   ←【項目3】をクリックすると表示 ・・・となるようにしたいのですが…。このような場合にはどうしたら良いのでしょうか。どなたかご回答よろしくお願いいたします。

    • ベストアンサー
    • Java
  • firefoxだけ、javascriptが思うように動作しません。

    firefoxだけ、javascriptが思うように動作しません。 下記、html記述です。 <a href="javascript:void(0);" onclick="show1()">tab1</a> <a href="javascript:void(0);" onclick="show2()">tab2</a> <a href="javascript:void(0);" onclick="show3()">tab3</a> <div id="page1">page1</div> <div id="page2">page2</div> <div id="page3">page3</div> 下記、javascript記述です。 function show1(){ page1.style.display="block"; page2.style.display="none"; page3.style.display="none"; } function show2(){ page1.style.display="none"; page2.style.display="block"; page3.style.display="none"; } function show3(){ page1.style.display="none"; page2.style.display="none"; page3.style.display="block"; } tab1をクリックすると、page1のみ表示 tab2をクリックすると、page2のみ… という風に動作させたいです。 IE、opera、chromeでは動作しますが、 firefoxだけ全く動作しません。 どのように修正すれば動くようになるでしょうか? javascriptについては初心者なので、 基本的なところから間違っているのかもしれませんが、 ご回答よろしくお願いします。

  • 一部のjavascriptがfirefoxで効かない

    ホームページのコーディングをしている者ですが、一部のjavascriptがfirefoxで効きません。 クリックした際にサブメニューを表示させていのですが、firefoxだとクリックしてもサブメニューが表示されません。 (IE、safariは正常に表示されます) どなたか下記ソースでの間違えをご教授いただけますでしょうか。 よろしくお願いします。 【jsファイルの記述】 function dispChange(id) { if(id.style.display=="none"){ id.style.display="block"; } else{ id.style.display="none"; } } 【htmlファイルの記述】 <div id="sublist"><a href="JavaScript:dispChange(movieSub)">&gt;&gt;test</a> <div id="movieSub" STYLE="display:none"> <div class="SubSub">├<a href="#">test</a></div> <div class="SubSub">├<a href="#">test</a></div> <div class="SubSub">└<a href="#">test</a></div> </div> </div>

  • Fire Foxでロールオーバが表示できない

    こんばんは。質問させていただきます。 Fire Foxで、以下のJavaScript <script type="text/javascript"> <!-- function expand(id) { if (id.style.display == "none") { id.style.display = "";} else {id.style.display = "none";} window.event.cancelBubble = true;} // --> </script> を<HEAD>内に含むHTMLファイルを表示させたところ、以下のタグ <span class="list" onclick="expand(a);" style="cursor:crosshair;">●●●</span> の●●●の部分をクリックしても、下に表示されるべきリンクが表示されません。Internet Explorerではちゃんと表示されるのですが・・・。 上手く表示させることはできますか?どなたかご回答よろしくお願い致します。

  • IE6でだけのメニュー収納不具合

    お世話になっております。 Javascriptで、「見出しに対するメニュー収納の調整をしておりますが 見出しの文字だけではなく、見出しに指定した箇所全てをクリックして収納/表示が出来るようにしたいと思っています。 そこで以下の通り記載しましたが、IE6でだけ、文字のクリックのみでしか開かないとのお知らせが入りました。 IE6でも、見出しそのものをクリックすると開くようにするには、どのように調整すべきでしょうか。 もしご存知の方がおられましたら、是非ご教授ください! 宜しくお願い致します。 ■HTML <span class="list" onclick="expand(idhoge);" style="cursor:hand;"><h3>見出し見出し</h3></span> <div id="idhoge" style="display:none"> <ul> <li>しまってあるメニュー</il> <li>しまってあるメニュー</li> </ul> </div> ■CSS h3 { background-image:url(../images/h3_hoge.gif); background-repeat:repeat-x; border:1px solid #CCCCCC; color:#333333; font-size:14px; font-weight:bold; margin:0 0 10px; padding:5px; } ■Javascript <script type="text/javascript"> <!-- function expand(id) { if (id.style.display == "none") { id.style.display = "";} else {id.style.display = "none";} window.event.cancelBubble = true;} // --> </script> HTMLの<span class>を<div class>に変えてもダメでした。。

  • FireFoxでのブロック表示・非表示制御

    DIVタグで囲んだ各ブロックの表示・非表示をJavascriptで動的に制御したく、下記のソースの通りJavascriptで表示の切り替え処理を記述したところ、IE6.0では動作しましたが、FireFox2.0では切り替えリンクをクリックしても無反応の状態となってしまいました。 FireFoxのJavascript互換について経験不足のため原因がつかめず困っております。 FireFoxでも動作可能となるには、どのような記述をすればよろしいでしょうか。もしご存知の方がおられましたら宜しくお願い致します。 *** Javascriptソース ****************** function showArea(areaId){ A.style.display="none"; B.style.display="none"; C.style.display="none"; areaId.style.display="block"; } *** ブロック切り替え用リンク ****************** <a href="javascript:showArea(A)">Aブロック</a> <a href="javascript:showArea(B)">Bブロック</a> <a href="javascript:showArea(C)">Cブロック</a> *** 表示用ブロック ****************** <div id="A"> Aブロックの記述内容 </div> <div id="B"> Bブロックの記述内容 </div> <div id="C"> Cブロックの記述内容 </div>

  • ツリーメニューの作成

    ツリーメニューの表示ができません。 記述は以下のとおりです (ヘッダー内) メタタグで標準スクリプト指定 <meta http-equiv="Content-Script-Style" content="text/javascript"> ツリーメニューの記述(某サイトよりコピペ) <script language="JavaScript"> <!-- function ok(id){if(document.all(id).style.display == "none"){document.all(id).style.display="block";}else{document.all(id).style.display="none";}} //--> </SCRIPT> ボディ内 (実際にツリーメニューを表示させる箇所) <A HREF="JavaScript:ok('tree1');"> ■メニュー </A> <div id="tree1" style="display:none;"> ツリー1<br> ツリー2<br> ツリー3<br> </div> ///////////////////////////////////////////////////////////// こんな感じです。 以前別のHTMLファイルで、ツリーメニューをつくったときには 正常に表示(クリックすると、ずらずらと出てくる)のに、今回同じソース(というのですか?)で記述してみたら、ダメでした。 「このページは表示できません」とかなります。

  • FireFoxだけちゃんとうごいてくれないです

    いつもお世話になっています。 Javascriptでメニューを閉じたり開いたりさせたくて難儀してます。 <script type="text/javascript"> <!-- // ツリーメニュー flag = false; function treeMenu(tName) { tMenu = document.all[tName].style; if(tMenu.display == 'none') tMenu.display = "block"; else tMenu.display = "none"; } //--> </SCRIPT> <li class="li> <a href="javaScript:treeMenu('treeMenu')">メニュー</a> </li> <DIV id="treeMenu" style="display:none"> <li class="li_sub"> <a href="index.html"> 小メニュー1 </A> </li> <li class="li_sub"> <a href="index.html"> 小メニュー2 </A> </li> </DIV> こんな感じでクリックすると小メニューが出てさらにクリックで非表示になるようにしています。 IE8やGoogleChromeですとうまくいきます。 (Safariではまだ試していません。) が・・・ FireFox3ではウンともスンともいいません。 記述自体がFirefox3では受け付けないのでしょうか? 根本的に考え方が違うぞ!とか そういったご意見でもかまいません。 どうかお助けください。 よろしくお願いいたします。

  • 折りたたみメニューについて

    現在あるサイトを作成中で、メニューに折りたたみ式のものを使っています。いろいろなサイトや書籍を参考に、メニューそのものはきちんと動いているのですが、メニューをクリックするたびに展開したサブメニューがまた閉じてしまい、ページ移動するたびにメニューを展開させるのは使い勝手が悪いなと感じております。 たとえばAというメニューを展開し、AAAというページへ移動した場合、展開されたAは展開したままにしたいのですが… なにかヒントでもつかめないかと検索を続けてみましたが、どうしても分からず困っています。 ソースを記述しますので、こう修正すればできるんじゃない?とか、こっちのソースを使ったらできるよ、とかありましたら教えていただけませんでしょうか? よろしくお願いします。 [Javascript] function oritatami(id,id2){ obj=(document.all)?document.all(id):((document.getElementById)?document.getElementById(id):null); if(obj) obj.style.display=(obj.style.display=="none")?"block":"none"; if(document.all){ with(document.all(id2)){innerText=(innerText=="▽")?"△":"▽";} } else if(document.getElementById){ with(document.getElementById(id2)){firstChild.nodeValue=(firstChild.nodeValue=="▽")?"△":"▽";} } } [HTML] <a href="URL" onclick="oritatami('mw00','+0');return false"><span id="+0">▽</span> メニュー1</a><br> <div class="d2" id="mw00" style="display:none;"> ┣メニュー2(メニュー1から展開)<br> ┃┣ 001<br> ┃┣ 004 - 007<br></div> </div>

専門家に質問してみよう