プルダウンで存在する日付のみを選べるようにしたいです.
閏年も考慮します.
初期値はできれば現在年月日の方がいいのですが,とりあえず初期のリストの先頭(2020/01/01)にします.
そこで以下のように書いてみたのですが,選択した年月に対応した日が表示されません.
(例:2020年2月(年は変えずデフォルトの状態),期待する日の選択範囲:1〜29,実際の選択範囲:1〜28)
具体的にどのような条件でうまくいっていないかもわからず困っています.
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>pulldown menu</title> 6</head> 7<body> 8<center> 9<body onLoad="selectInitialize();"> 10 <form name="dateform" method="post" action="./pathToProgramFile"> 11 <!--選択肢その1--> 12 <select id="selectId1" onChange="changeSelect1();"> 13 </select>年 14 <!--選択肢その2--> 15 <select id="selectId2" onChange="changeSelect2();"> 16 </select>月 17 <!--選択肢その3(選択肢その1の項目によって変化)--> 18 <select id="selectId3"> 19 </select>日 20 </form> 21 22 <script type = "text/javascript"> 23 var uruu=0; 24 25 // 年月日初期設定(現在年月日を初期値にする方が望ましい・・・) 26 function selectInitialize(){ 27 // 年の初期設定 28 var selectElement = document.getElementById("selectId1"); 29 for (var i = 2020; i >= 2015; i--) { 30 var option = document.createElement("option"); // <option></option> 要素の作成 31 option.value = i; // valueの設定 32 option.innerText = i; // 表示テキストの設定 33 selectElement.appendChild(option); // <option></option> 要素の追加 34 } 35 36 // 月の初期設定 37 var selectElement = document.getElementById("selectId2"); 38 for (var i = 1; i <= 12; i++) { 39 var option = document.createElement("option"); // <option></option> 要素の作成 40 option.value = i; // valueの設定 41 option.innerText = i; // 表示テキストの設定 42 selectElement.appendChild(option); // <option></option> 要素の追加 43 } 44 45 // 日の初期設定 46 var selectElement = document.getElementById("selectId3"); 47 var select1 = Number(document.dateform["selectId1"].value); 48 var select2 = Number(document.dateform["selectId2"].value); 49 ld = 0; 50 if ( select2 == 1 && select2 == 3 && select2 == 5 && select2 == 7 && select2 == 8 && select2 == 10 && select2 == 12 ){ 51 ld = 31; 52 } 53 if (select2 == 4 && select2 == 6 && select2 == 9 && select2 == 11){ 54 ld = 30; 55 } 56 if (select2 == 2){ 57 if( (select1 % 4 == 0 && select1 % 100 != 0) || select1 % 400 == 0){ 58 ld = 29; 59 } 60 else{ 61 ld = 28; 62 } 63 } 64 for (var i = 1; i <= 31; i++) { 65 var option = document.createElement("option"); // <option></option> 要素の作成 66 option.value = i; // valueの設定 67 option.innerText = i; // 表示テキストの設定 68 selectElement.appendChild(option); // <option></option> 要素の追加 69 } 70 } 71 72 // 年 の選択が変わった時 73 function changeSelect1() 74 { 75 var select1 = document.dateform["selectId1"].value; // プルダウン年取得 document.フォーム名["セレクトID"].value 76 select1 = Number(select1); 77 78 if ( (select1%4==0 && select1%100!=0) || select1%400==0 ){ 79 uruu = 1; 80 } 81 else{ 82 uruu = 0; 83 } 84 } 85 86 // 月 の選択が変わった時 87 function changeSelect2(){ 88 var select2 = document.dateform["selectId2"].value; // プルダウン月取得 document.フォーム名["セレクトID"].value 89 select2 = Number(select2); 90 91 if ( select2==1 && select2==3 && select2==5 && select2==7 && select2==8 && select2==10 && select2==12 ) { 92 var selectElement = document.getElementById("selectId3"); 93 while(selectElement.lastChild){ 94 selectElement.removeChild(selectElement.lastChild); 95 } 96 for (var i = 1; i <= 31; i++) { 97 var option = document.createElement("option"); // <option></option> 要素の作成 98 option.value = i; // valueの設定 99 option.innerText = i; // 表示テキストの設定 100 selectElement.appendChild(option); // <option></option> 要素の追加 101 } 102 } 103 if( select2==4 && select2==6 && select2==9 && select2==11 ){ 104 var selectElement = document.getElementById("selectId3"); 105 while (selectElement.lastChild) { 106 selectElement.removeChild(selectElement.lastChild); 107 } 108 for (var i = 1; i <= 30; i++) { 109 var option = document.createElement("option"); // <option></option> 要素の作成 110 option.value = i; // valueの設定 111 option.innerText = i; // 表示テキストの設定 112 selectElement.appendChild(option); // <option></option> 要素の追加 113 } 114 } 115 if(select2==2){ 116 if (uruu==1){ 117 var selectElement = document.getElementById("selectId3"); 118 while (selectElement.lastChild) { 119 selectElement.removeChild(selectElement.lastChild); 120 } 121 for (var i = 1; i <= 29; i++) { 122 var option = document.createElement("option"); // <option></option> 要素の作成 123 option.value = i; // valueの設定 124 option.innerText = i; // 表示テキストの設定 125 selectElement.appendChild(option); // <option></option> 要素の追加 126 } 127 } 128 else{ 129 var selectElement = document.getElementById("selectId3"); 130 while (selectElement.lastChild) { 131 selectElement.removeChild(selectElement.lastChild); 132 } 133 for (var i = 1; i <= 28; i++) { 134 var option = document.createElement("option"); // <option></option> 要素の作成 135 option.value = i; // valueの設定 136 option.innerText = i; // 表示テキストの設定 137 selectElement.appendChild(option); // <option></option> 要素の追加 138 } 139 } 140 } 141 } 142 143 144 </script> 145</center> 146</body> 147</html>
参考
回答1件
あなたの回答
tips
プレビュー