• ベストアンサー

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ではちゃんと表示されるのですが・・・。 上手く表示させることはできますか?どなたかご回答よろしくお願い致します。

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

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.4

<html> <head> <script type="text/javascript"> <!-- function expand(e) { if ( (typeof e) == 'string' ) e=document.getElementById(e); if (e.style.display == "none") { e.style.display = "inline"; } else { e.style.display = "none"; } } // --> </script> </head> <body> <div class="list" onclick="expand('a');" style="cursor:crosshair;">●●●</div> <div id="a" style="display:none">○○○</div> <div class="list" onclick="expand('b');" style="cursor:crosshair;">■■■</div> <div id="b" style="display:none">□□□</div> </body> </html>

jade3312
質問者

お礼

こんばんは!お返事が遅くなってしまい申し訳ありません…。何度も回答してくださってありがとうございます! 回答していただいたスクリプトを試しに実行してみたところ、思うとおりに作動しました!これでやっと思うようなレイアウトがFirefoxでも作れます!! spanではなくdivで指定するのですね…。なるほど。とても勉強になりました。 どうもありがとうございました!

その他の回答 (3)

  • auty
  • ベストアンサー率58% (284/486)
回答No.3

・ displayとvisibilityの2つの例を考えてみました。 ・ IE のcancelBubbleは、複雑な構成になったときに必要となってきます。 以下のコードを参考にしてみてください。 ------------------------------------------------------------ <html> <head> <script type="text/javascript"> <!-- function expand(e) { if ( (typeof e) == 'string' ) e=document.getElementById(e); if (e.style.display == "none") { e.style.display = "inline"; } else { e.style.display = "none"; } //window.event.cancelBubble = true; } // --> </script> </head> <body> <button onclick="expand('list1')">inline/none</button> AAA<span id="list1" class="list" onclick="expand(this);" style="cursor: crosshair;">●●●</span>ZZZ </body> </html> ------------------------------------------------------------ <html> <head> <script type="text/javascript"> <!-- function expand(e) { if ( (typeof e) == 'string' ) e=document.getElementById(e); if (e.style.visibility == "hidden") { e.style.visibility = "visible"; } else { e.style.visibility = "hidden"; } window.event.cancelBubble = true; } // --> </script> </head> <body> <button onclick="expand('list1')">visible/hidden</button> AAA<span id="list1" class="list" onclick="expand(this);" style="cursor: crosshair;">●●●</span>ZZZ </body> </html>

jade3312
質問者

お礼

お礼が遅くなってしまい、申し訳ありませんでした。 回答ありがとうございます。 早速試してみたのですが、すみません、こちらの質問の仕方が悪かったようで、うまく伝えられてなかったですね;; HTMLページとして表示してみると、最初は●●●しか表示されていなく、これをクリックすると、たとえば○○○などの文字が下に表示されるようにしたいのです。(再び●●●をクリックすると○○○が消える) ご回答くださったスクリプトは少し違いますが、でも、このスクリプトは初めて見るので、とても勉強になりました。活用させて頂きます! どうもありがとうございました。

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

<span class="list" onclick="expand(a);" style="cursor:crosshair;">●●●</span> <span id="a" style="display:none">test</span> ってなっているのですよね? であれば、expand(a)というようにオブジェクトとしてaをわたしているようなので headの部分のscriptに window.onload=function(){ a=document.getElementById("a"); } というオブジェクトを宣言する行をたしてあげてください。 あとfirefoxではwindow.event.cancelBubble = trueは有効ではないと 思います。

jade3312
質問者

お礼

お礼が遅くなってしまい、申し訳ありませんでした。 回答ありがとうございます。 scriptですが、<span id="a" style="display:none">test</span>の部分はありません。 <span class="list" onclick="expand(a);" style="cursor:crosshair;">●●●</span> の下に(たとえば)○○○などの文字があり、最初は●●●しか見えていない状態なのですが、これをクリックすると、その下に○○○が表示されるようにしたいのです。 教えてくださった行を足してみたところ、ちゃんと表示されました!ありがとうございます! それで、もうひとつお聞きしたいのですが・・・。こちらの質問の仕方が悪かったのですが、実はdiv idが"a"だけでなく、"b","c"…と複数あるのです。つまり、 <span class="list" onclick="expand(a);" style="cursor:crosshair;">●●●</span> ○○○    (←クリックすると表示される <span class="list" onclick="expand(b);" style="cursor:crosshair;">■■■</span> □□□     (←同   …というふうに。 回答してくださった行では"a"で指定した部分(●●●の部分)しかクリックしても反応してくれませんでした。 window.onload=function(){ a=document.getElementById("★"); } の★の部分をb、cと変えてみたのですが、上手くいきませんでした…。 よろしければまた回答して頂けるとうれしいです。ありがとうございました。よろしくお願いいたします。

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

IE独自の曖昧表記がされているためです。 id.style.display ↓ document.getElementById(id).style.display で、試してみて。

jade3312
質問者

お礼

御礼が遅くなってしまい、申し訳ありませんでした。 回答ありがとうございます。早速書き換えて実行してみたのですが、上手くいきませんでした…。IEには曖昧表記というものがあるのですね。初めて知りました。いろいろ調べてみようと思います。勉強になりました。 どうもありがとうございました。

関連するQ&A