- ベストアンサー
セレクトメニューから該当するページを表示
下記コードを作成しました。 セレクトメニューを選択したら該当するページを表示させるプログラムです。 <select name="cmbSel" onChange="PageJump()"> <option>トップページ1</option> <option>トップページ2</option> 上記だけでリンクページへ飛ぶような事はできないのでしょうか? どなたかご存知の方いましたらご教授頂けると幸いです。 宜しくお願い致します。 ///////////////////////////////////////////////////////////////// </select> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> </HEAD> <script language="JavaScript" type="text/javascript"> <!-- function PageJump() { var sts; sts = document.frmMain.cmbSel.selectedIndex; switch (sts) { case 0: location.href="http://www.yahoo.co.jp/"; case 1: location.href="http://weather.yahoo.co.jp/weather/"; } } // --> </script> <form name="frmMain"> <select name="cmbSel" onChange="PageJump()"> <option>トップページ1</option> <option>トップページ2</option> </select> </form> </HTML>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
<select name="cmbSel" onChange="location.href=this.options[this.selectedIndex].value"> <option value="http://www.yahoo.co.jp/">トップページ1</option> <option value="http://mail.yahoo.co.jp/">トップページ2</option> </select>
その他の回答 (3)
- disneypooh555
- ベストアンサー率50% (1/2)
#2です。 すみません。 ソース中の「alert(sts);」はデバック用につけたので、はずしてください。
- disneypooh555
- ベストアンサー率50% (1/2)
こんにちは。 ソースをコピーして実際に実行してみました。 break文がないため、case 0の場合にも、case 0の処理を実行後に、case 1の処理が実行されているようです。 結果的にトップページ1とトップページ2のどちらを選択しても、トップページ2が表示されてしまうのです。 以下のようにソースを修正してみてください。 <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> </HEAD> <script language="JavaScript" type="text/javascript"> <!-- function PageJump() { var sts; sts = document.frmMain.cmbSel.selectedIndex; alert(sts); switch (sts) { case 0: location.href="http://www.yahoo.co.jp/"; break; case 1: location.href="http://weather.yahoo.co.jp/weather/"; break; default: location.href="http://mail.yahoo.co.jp/"; } } // --> </script> <form name="frmMain"> <select name="cmbSel" onChange="PageJump()"> <option>トップページ1</option> <option>トップページ2</option> </select> </form> </HTML> また、default:以下の部分は、stsが0でも1でもない場合に実行されます。 必須ではありませんが、switch文を記入する際には、default文を合わせて記入することをオススメします。 参考URLの内容もご覧になって見て下さい。
補足
セレクトメニューとちょっとしたスクリプトだけで作成できるような感じで作りたいのです。 下記コードのようにURLをフォームに埋め込んで使うようなやり方です。 <select name="cmbSel" onChange="PageJump()"> <option value="http://www.yahoo.co.jp/">トップページ1</option> <option value="http://mail.yahoo.co.jp/">トップページ2</option> 上記では実行できませんが、何かにアレンジする事により 下記ページの「右上のセレクトボックス」のスクリプトを参考 http://www.otaku-town.com/ 宜しくお願い致します。
- coboler
- ベストアンサー率57% (57/99)
switch文を switch (sts) { case 1: location.href="http://www.yahoo.co.jp/"; break; case 2: location.href="http://weather.yahoo.co.jp/weather/"; break; } として、select部分を <select name="cmbSel" onChange="PageJump()"> <option></option> <option>トップページ1</option> <option>トップページ2</option> </select> とすれば、正しく動作すると想います。
補足
アドバイス有難うございます。 質問したコード実行可能です。 Break文が抜けていたのは質問ミスです。
お礼
有難うございます。 ただ単に onChange="location.href=this.options[this.selectedIndex].value">にすればよかったのですね。