質問編集履歴

3

FORMを追加しました。

2018/11/15 05:34

投稿

sky.user.
sky.user.

スコア15

test CHANGED
File without changes
test CHANGED
@@ -340,6 +340,8 @@
340
340
 
341
341
  ```HTML
342
342
 
343
+ <FORM id = "form1">
344
+
343
345
  <td><select name="year" id="selectYear" onchange="setSelectMonth()">
344
346
 
345
347
  </select> 年
@@ -352,4 +354,8 @@
352
354
 
353
355
  </select> 日</td>
354
356
 
357
+ </FORM>
358
+
359
+
360
+
355
361
  ```

2

修正しました。

2018/11/15 05:34

投稿

sky.user.
sky.user.

スコア15

test CHANGED
File without changes
test CHANGED
@@ -104,6 +104,236 @@
104
104
 
105
105
  }
106
106
 
107
+
108
+
109
+ /*
110
+
111
+ * 年のoptionを更新
112
+
113
+ */
114
+
115
+ function setSelectYear() {
116
+
117
+
118
+
119
+ // selectボックスIDからElementの取得
120
+
121
+ var selectElement = document.getElementById("selectYear");
122
+
123
+
124
+
125
+ // 現在~5年前分まで回す
126
+
127
+ for (var y = NowYear; y >= NowYear - 5; y--) {
128
+
129
+
130
+
131
+ // <option>要素を追加
132
+
133
+ var option = document.createElement("option");
134
+
135
+
136
+
137
+ // optionのvalue属性を設定
138
+
139
+ option.value = y;
140
+
141
+
142
+
143
+ // リストに表示するテキストの設定
144
+
145
+ option.text = y;
146
+
147
+
148
+
149
+ // セレクトボックスにオプションを追加
150
+
151
+ selectElement.appendChild(option);
152
+
153
+ }
154
+
155
+ setSelectMonth();
156
+
157
+ }
158
+
159
+
160
+
161
+ /*
162
+
163
+ * 月のoptionを更新
164
+
165
+ */
166
+
167
+ function setSelectMonth() {
168
+
169
+
170
+
171
+ // selectボックスIDからElementの取得
172
+
173
+ var selectElement = document.getElementById("selectMonth");
174
+
175
+
176
+
177
+ // 要素削除用
178
+
179
+ var child;
180
+
181
+
182
+
183
+ while (child = selectElement.firstChild) {
184
+
185
+ selectElement.removeChild(child);
186
+
187
+ }
188
+
189
+
190
+
191
+ // 12ヶ月分回す
192
+
193
+ for (var m = 1; m <= 12; m++) {
194
+
195
+
196
+
197
+ // <option>要素を追加
198
+
199
+ var option = document.createElement("option");
200
+
201
+
202
+
203
+ // optionのvalue属性を設定
204
+
205
+ option.value = m;
206
+
207
+
208
+
209
+ // リストに表示するテキストの設定
210
+
211
+ option.text = m;
212
+
213
+
214
+
215
+ // セレクトボックスにオプションを追加
216
+
217
+ selectElement.appendChild(option);
218
+
219
+
220
+
221
+ // 現在の日を引数に渡さないsetSelectDateを実行
222
+
223
+ setSelectDate();
224
+
225
+ }
226
+
227
+ }
228
+
229
+
230
+
231
+ /*
232
+
233
+ * 日のoptionを更新
234
+
235
+ */
236
+
237
+ function setSelectDate() {
238
+
239
+
240
+
241
+ // 選択された年を取得
242
+
243
+ var y = document.form1.selectYear.options[document.form1.selectYear.selectedIndex].value;
244
+
245
+
246
+
247
+ // 選択された月を取得
248
+
249
+ var m = document.form1.selectMonth.options[document.form1.selectMonth.selectedIndex].value;
250
+
251
+
252
+
253
+ // 閏年なら
254
+
255
+ if (m == 2 && (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))) {
256
+
257
+
258
+
259
+ // 2月の閏年
260
+
261
+ var last = 29;
262
+
263
+
264
+
265
+ // それ以外なら
266
+
267
+ } else {
268
+
269
+ var lastday = new Array(11);
270
+
271
+ lastday = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
272
+
273
+ last = lastday[m - 1];
274
+
275
+ }
276
+
277
+
278
+
279
+ // 要素取得と初期化
280
+
281
+ var selectElement = document.getElementById("selectDate");
282
+
283
+
284
+
285
+ // 要素削除用
286
+
287
+ var child;
288
+
289
+
290
+
291
+ // セレクトボックスの子要素を取得しつつループ
292
+
293
+ while (child = selectElement.firstChild) {
294
+
295
+
296
+
297
+ // セレクトボックスから子要素を削除
298
+
299
+ selectElement.removeChild(child);
300
+
301
+ }
302
+
303
+
304
+
305
+ // 1日から月の最終日まで回す
306
+
307
+ for (var d = 1; d <= last; d++) {
308
+
309
+
310
+
311
+ // <option>要素を追加
312
+
313
+ var option = document.createElement("option");
314
+
315
+
316
+
317
+ // optionのvalue属性を設定
318
+
319
+ option.value = d;
320
+
321
+
322
+
323
+ // リストに表示するテキストの設定
324
+
325
+ option.text = d;
326
+
327
+
328
+
329
+ // セレクトボックスにオプションを追加
330
+
331
+ selectElement.appendChild(option);
332
+
333
+ }
334
+
335
+ }
336
+
107
337
  ```
108
338
 
109
339
 

1

修正しました。

2018/11/15 05:07

投稿

sky.user.
sky.user.

スコア15

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  お世話になっております。
2
2
 
3
- 以前の日付プルダウン処理https://teratail.com/questions/152774に関してです。
3
+ 以前の日付プルダウン処理([リンク内容](https://teratail.com/questions/152774))に関してです。
4
4
 
5
5
 
6
6