• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:一部のjavascriptがfirefoxで効かない)

一部のjavascriptがfirefoxで効かない

このQ&Aのポイント
  • ホームページのコーディングをしている者ですが、一部のjavascriptがfirefoxで効かない問題が発生しています。
  • firefoxでクリックしてもサブメニューが表示されませんが、IEやsafariでは正常に表示されます。
  • javascriptの「dispChange」関数の実装に問題がある可能性があります。

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

  • ベストアンサー
回答No.1

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>Q4132865 TestCase 1</title> <script type="text/javascript">//<![CDATA[ //【最大の問題点】 //idは文字列であるべきだと思う。 //styleプロパティがあるのは要素なので //document.getElementByIdを受け取って //要素を返すようにしてみた function dispChange(id) { var element = document.getElementById(id); if (element == null){ //何書こうかな。 } if(element.style.display=="none"){ element.style.display="block"; //要素によってはblockではなく空文字列のほうがいいこともある。 } else{ element.style.display="none"; } } //]]> </script> </head> <body> <!-- 説明の都合上,嫌々ながら元のコードをあまり変えなかったが 個人的にはこのマークアップ嫌いでdl,dt,dd要素を使って欲しい また、安易にa要素をscript発動用要素として用いて欲しくないと思っている。 自分なら全然違うものを書いている --> <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> </body> </html>

engalmiyu
質問者

お礼

ご回答ありがとうございます。 firefoxでもうまく動作しました。 idに関してはおっしゃるとおりです。 わざわざ元コードの変更が少なくなるようなコードまで記述して下さり、ありがとうございました。

その他の回答 (1)

回答No.2

間違いというわけではないのですが、 IE、Safari、Operaは<div id="movieSub">このように書いたエレメントに対して、 id.style.displayのように、メンバ変数に . でつないでアクセスするJavaScriptらしい書き方で、 window.movieSub("window"は省略可能)が使えますが、 Firefoxのみこの方式をサポートしていません。 IEのみdocument.all.movieSubという形式もサポートしています。 <div id="movieSub">にアクセスするには document.getElementById('movieSub')を使ってください。 document.getElementByIdは最近のメジャーなブラウザは全てサポートしています。

engalmiyu
質問者

お礼

ご丁寧な回答ありがとうございました。 firefoxでもうまく動作するようになりました。

関連するQ&A