連動のプルダウンを作っています。
うるう対応、現在から17~40年前の日付を選択
選択初期は一番小さな値。
大体出来たのですが、動作チェックで問題が1つ。
年を選ぶ度に月が増え、
月を選ぶ度に日が増えていきます。
つまり日付を例にすると、
lang
11 22 33 4~ 531 61 72 8~ 931
という具合に。
どこかで値を初期化すれば良いのだと思うんですけど、
どのタイミングでどうやって初期化するのか、という点がわかりません。
ご指導頂けると幸いです。
lang
1<!DOCTYPE html> 2<html> 3<head> 4<title>無題 1</title> 5</head> 6<body> 7<!-------- 選択フォーム --------> 8 9<form name="registration"> 10<select name="selectYear" id="selectYear" onchange="setSelectMonth()"></select> 年 11<select name="selectMonth" id="selectMonth" onchange="setSelectDate()"></select> 月 12<select name="selectDate" id="selectDate"></select> 日 13</form>
lang
1<script type="text/javascript"> 2 3/*====[ 現日付を取得 ]====*/ 4 5var Now = new Date(); 6var NowYear = Now.getFullYear(); 7 8/*====[ 関数 : オプションを更新(年) ]====*/ 9 10function setSelectYear(){ 11for(var y=NowYear-40; y<NowYear-17; y++){ 12var selectElement = document.getElementById("selectYear");//selectボックスIDからElementの取得 13var option = document.createElement("option");//<option>要素を追加 14option.value = y;//optionのvalue属性を設定 15option.text = y;//リストに表示するテキストの設定 16selectElement.appendChild(option);//セレクトボックスにオプションを追加 17 18} 19setSelectMonth(); 20} 21setSelectYear(); 22 23/*====[ 関数 : オプションを更新(月) ]====*/ 24 25function setSelectMonth(){ 26for(var m=1; m<=12; m++){ 27var selectElement = document.getElementById("selectMonth"); 28var option = document.createElement("option"); 29option.value = m; 30option.text = m; 31 32selectElement.appendChild(option); 33 34} 35setSelectDate(); 36} 37 38/*====[ 関数 : オプションを更新(日) ]====*/ 39 40function setSelectDate(){ 41//選択された年を取得 42var Year = 43document.registration.selectYear.options[ 44document.registration.selectYear.selectedIndex 45].value; 46//選択された月を取得 47var Month = 48document.registration.selectMonth.options[ 49document.registration.selectMonth.selectedIndex 50].value; 51 52var lastDate = new Date(Year,Month,0).getDate(); 53 54 55 56for(var d=1; d<=lastDate; d++){ 57var selectElement = document.getElementById("selectDate"); 58var option = document.createElement("option"); 59 60 61option.value = d; 62option.text = d; 63 64selectElement.appendChild(option); 65 66} 67} 68</script> 69</body> 70</html>
※一緒のページに書いてるので/bodyと/htmlはscriptのところにあります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/27 03:16
2015/05/27 03:17
2015/05/27 04:03
2015/05/27 05:00
2019/09/04 08:14