- ベストアンサー
一部のjavascriptがfirefoxで効かない
- ホームページのコーディングをしている者ですが、一部のjavascriptがfirefoxで効かない問題が発生しています。
- firefoxでクリックしてもサブメニューが表示されませんが、IEやsafariでは正常に表示されます。
- javascriptの「dispChange」関数の実装に問題がある可能性があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
<?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')">>>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>
その他の回答 (1)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
間違いというわけではないのですが、 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は最近のメジャーなブラウザは全てサポートしています。
お礼
ご丁寧な回答ありがとうございました。 firefoxでもうまく動作するようになりました。
お礼
ご回答ありがとうございます。 firefoxでもうまく動作しました。 idに関してはおっしゃるとおりです。 わざわざ元コードの変更が少なくなるようなコードまで記述して下さり、ありがとうございました。