• ベストアンサー

プルダウンメニューで、選択項目をリンク先でも維持したい。

javascriptを使用したプルダウンメニューについて質問です。 <form name="form1"> <select name="select" onChange="location=select.options[select.selectedIndex].value"> <option value="a.html#01">A01</option> <option value="a.html#02">A02</option> <option value="a.html#03">A03</option> <option>---------------</option> <option value="b.html#01">B01</option> <option value="b.html#02">B02</option> <option>---------------</option> </select> </form> 2つのページ(a.html、b.html)上部に上記のようなプルダウンメニューを置き、それぞれ相互に行き来できるようにしました。 一応正常に動くのですが、たとえばa.htmlのプルダウンで『B01』を選択してリンク先b.htmlに飛ぶと、プルダウンの選択項目が一番上の『A01』に戻ってしまっています。 b.htmlに飛んだ後も『B01』選択の状態で残したいのですが。 どのようにすればよいのでしょうか・・・ よろしくお願い致します。

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

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

あまり綺麗には書けてませんが、取りあえずは動くとおもいます・・ <html> <head> <script> function start(){ x=location.hash; if(x!=""){ y=form1.select1.options; for(i=0;i<y.length;i++){ z=y[i].value.indexOf(x,0) if(z!=-1){ form1.select1.options[i].selected=true; } } } } </script> </head> <body onload="start()"> <form name="form1"> <select name="select1" onchange="location.href=this.options[this.selectedIndex].value"> <option value="a.html#A01">A01</option> <option value="a.html#A02">A02</option> <option value="a.html#A03">A03</option> <option value="b.html#B01">B01</option> <option value="b.html#B02">B02</option> <option value="b.html#B03">B03</option> </select> </form> <!--b.htmlでは以下のid属性の値をid="B01"などに変更する --> <p id="A01">A01</p> <p id="A02">A02</p> <p id="A03">A03</p> </body> </html>

shiho78122
質問者

お礼

早速試してみたところ、動きました!すごいです! No.1、No.2お二方の回答を参考に色々がんばってはみたのですが 全く出来ず困り果てていました。 本当にありがとうございます。 これからじっくり解析していきたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • gimmick
  • ベストアンサー率49% (134/270)
回答No.2

考え方だけ書きます。 まず、指定されたアンカーはwindow.location.hashで取得できます。 例えば、b.html#01に飛んだ場合、b.html側では"#01"という文字列が取得できます。 そこで、bodyか何かのonLoadイベントで指定されたアンカーをチェックして、 その内容に応じてselectのvalueかselectedIndexを指定します。 試してないので自信は無いのですが、多分この方法でできると思います。

shiho78122
質問者

お礼

考え方だけでも非常に参考になりました。 どうすべきなのか全くわからない状態でしたので・・・ (しかし、書けません。。) ありがとうございました。勉強になりました。

すると、全ての回答が全文表示されます。
noname#18558
noname#18558
回答No.1

JavaScriptだけだと、けっこうややこしいですね。 参考URLを参考にやればできそうです。 サンプルを作ろうと思ったのですが、時間がかかりそうなので割愛しました。 あとはやってみてください。

参考URL:
http://homepage2.nifty.com/BASH/WWW/JavaScript/qs.html
shiho78122
質問者

お礼

Javascriptだけでコレは面倒なものだったのですね。 参考URLを拝見して、なんとなくわかりかけたのですが・・・・わからなかったです。。 でも考え方の参考になったというか、非常に勉強になりました。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A