
|
|
form / select / optionタグ & JavaScript セレクトメニュー/プルダウンメニュー
form / select / optionタグ & JavaScript セレクトメニュー/プルダウンメニュー
上記リンク先ではフォームタグのselectタグ内でセレクトボックスのつくり方について触れました。 今回はこのセレクトボックスで選択されたメニュー(セレクトメニュー・プルダウンメニュー)に応じて他のページに移動できるようにしてみましょう。 これにはJavaScriptを使用します。 それでは早速セレクトボックスのおさらいから。
のようにoption終了タグは省略しても良いタグですけど省略しない場合は、このように記述するんでしたよね。 今回JavaScriptは外部ファイルにしたいと思いますので、このフォームタグとSELECTタグに特定の名前をつけてJavaScriptファイルから参照できるようにしてみましょう。
このようにHTMLタグに名前を付けるにはname属性(XHTMLタグではid属性)を使うんでしたよね。 そして次は、セレクトタグに『イベント』を割り当てます。 『イベント』?と思われた方も多いでしょう。 『イベント』とはプログラムやスクリプトでは「何かが起こる」ということを意味しています。 例えば、あなたが道を歩いていて交差点があったとします。 そこには信号があり、今は赤です。 あなたはどうしますか? え?!渡る?!ダメですよ。 ちゃんと止まりましょう。 答えは「止まる」ですよね。
といったように「何かが起こった場合に対応してある動きをする」事をプログラムの世界では『イベントドリブンプログラミング』といったりしますが、今回の章では「セレクトボックスで選択されたメニューによってそれぞれのページへ移動する」ことになります。 とはいえ、1時間信号が変わらず、どこをどう見渡しても車もバイクも危険なものも走ってないなんて言ったらそりゃ・・・待ちますよね(えっ!? 話を戻すと例えば下記は、実際に動作します(あなたがJavaScriptを有効にしていれば)
実はJavaScriptではHTMLファイル内のいくつかのタグにこの「イベント」を割り当てることができます(イベントのタイミング)。 今回は、SELECTタグにイベントを割り当てます。 「割り当てる」というのは「タグに属性を設定する」のと同じような感覚でできますのでご安心下さい。 先ほどの例を使うと
そうです、「onChange=""」の部分がイベントの割当ということになります。(全て小文字でonchangeでも可) (全て小文字でonchangeでも可、XHTMLではむしろ小文字でないとNG) この場合は
ことになります。 残念ながら文章でではなく、スクリプト(プログラム)を記述するのですが文章で書くとここに記述したい内容は
となります。 さてここまでを整理しますと
までが終わったことになります。 あとは
だけです。 新規でテキストエディタを開いて以下を記述またはコピーしてファイル名は、あなたのお好きな名前にして頂いて拡張子を『.js』として保存してください。 ◆『あなたのお好きな名前.js』
[ location.href ]は移動先URL、[ document ]は、(ここでは記述したHTMLファイルの「文書」)実際のURLで以降ドットでつなげている2つは[フォーム名]と[セレクト名( select name="" )]、[ selectedIndex ]は、ゼロから始まる選択肢[0,1,2,・・・]の順番の事です。 前述のセレクトボックスの選択肢、「(空、カラ)」「FORMタグ」「SELECTタグ」は、[ selectedIndex ]のゼロから始まる選択肢[0,1,2]にそれぞれ該当し、関数[ menu_pulldown(menu_pulldownhpurl) ]の引数(カッコ内)[ menu_pulldownhpurl ]にコールした(関数を呼んだ)ページのURLが入り(この為[ document ]がどれなのかがわかる)、処理を分岐して選択された時の各URLを割り当てています。 空白の時は何もしません。また、URLは、http://〜からはじまっても大丈夫です。 そしてプルダウンメニューを表示するhtmlファイルにJavaScriptの外部ファイルを設定すれば完了です。 因みにこの外部ファイル『あなたのお好きな名前.js』の内容については、
の『//』はJavaScriptの単一行用のコメントアウト記号です。
は、プログラムの世界では『関数』とか『ファンクション』と呼ばれており
という意味になります。 その他は
つまり、
という意味になります。 プログラムやスクリプトは初めてという方は、かなり大変だったと思います、お疲れ様でした。 でもこれができたら以降、考え方は同じですので覚えることは、ちょっとで大丈夫ですよ。 次は
|