selectボックスの選択結果を変数に代入したい
質問No.8512768の追加質問です。
先ほど同じ内容をOgre7077さんの補足に入れて投稿してしまいました。
LancerVIIさん、Ogre7077さん
ご丁寧な説明を頂き、ありがとうございます。
LancerVIIさんのスクリプトを使ってセレクトボックスの表示内容は完成しました。すごく簡潔になりました。
それに追加してOgre7077さんの内部処理のスクリプトを入れてみましたが、
alertで月名がうまく表示出来ません。
セレクトボックスで月をセレクトした直後にその年月のカレンダーを表示させたいので月のセレクトボックスにもonhangeを追加しました。
勉強不足で大変申し訳ありませんが、下記スクリプトの添削をよろしくお願いします。
<!DOCTYPE html>
<html>
<head>
<meta charset="Shift_JIS">
<style>
</style>
<script>
var monthArray = new Array();
monthArray['y2014'] = new Array ( 1, 2, 3, 4 ); // 2014年が選択された場合に表示する月
monthArray['y2013'] = new Array ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ); // 2013年が選択された場合に表示する月
monthArray['y2012'] = new Array ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 );
monthArray['y2011'] = new Array ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 );
monthArray['y2010'] = new Array ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 );
monthArray['y2009'] = new Array ( 10, 11, 12 ); // 2012年が選択された場合に表示する月
function getSelectedText(obj) {
var year = obj.options[obj.selectedIndex].value; // 選択された年を取得
var monthObj = document.getElementById('month'); // 月表示用のオブジェクトを取得
if ( year === '' ) {
monthObj.length = 1; // 「----」が選択された場合は選択をクリアして処理終了
return;
}
var month = monthArray['y'+year]; // 年で表示月を取得
monthObj.length = month.length+1; // option用の領域を広げる
for ( var i = 0; i < month.length; i ++ ) {
monthObj.options[i+1].text = month[i]; // 取得した表示月の分、optionを追加する
monthObj.options[i+1].value = month[i]; // 先頭には「--」が存在するためi+1から追加
}
monthObj.options[0].selected = true; // 先頭の「--」を選択状態とする
}
</script>
<body>
<select name="year" onchange="getSelectedText(this);">
<option value="">----</option>
<option value="2014">2014</option>
<option value="2013">2013</option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
</select><a>年 </a>
<select name="month" id="month" onchange="goCalender(this);">
<option value="">--</option>
</select><a>月</a>
<script>/*
function getSelectedText(obj){
var opt = obj.options[obj.selectedIndex];
goCalender.year = opt.text;
goCalender();
}
function goCalender(obj){
var me = arguments.callee;
var selYear = me.year;
var selMonth = me,month;
alert(selYear + selMonth);
}*/
</script>
</body>
</head>
</html>
お礼
ご回答ありがとうございます。