回答編集履歴
1
コメント追加、コードの不足を修正
answer
CHANGED
@@ -38,17 +38,21 @@
|
|
38
38
|
|
39
39
|
// 日の初期設定
|
40
40
|
const dateSelect = document.getElementById('selectId3');
|
41
|
-
// 要素の作成は changeSelect2() とやることは同じなので、
|
41
|
+
// 要素の作成は changeSelect1(), changeSelect2() とやることは同じなので、
|
42
|
+
// そちらを呼び出すだけにする
|
42
|
-
|
43
|
+
changeSelect1(); // ← うるう年の判定
|
44
|
+
changeSelect2(); // ← 日付の <option> の生成
|
43
45
|
dateSelect.value = now.getDate(); // 今日の日にする
|
44
46
|
}
|
45
47
|
|
46
48
|
|
47
49
|
// 年 の選択が変わった時
|
48
50
|
function changeSelect1() {
|
49
|
-
// new Date('2019-02-29')
|
51
|
+
// うるう年ではない年、たとえば2019年で new Date('2019-02-29') として
|
52
|
+
// Dateのインスタンスを生成したとき、そのインスタンスが示す日付は自動的に
|
53
|
+
// 3月1日になって、 getMonth() の値が3月になる。
|
50
|
-
//
|
54
|
+
// つまり、「うるう年か?」 は、「(new Date(xxxx-02-29)).getMonth() が 3月か?」
|
51
|
-
//
|
55
|
+
// と言い換えることができる。
|
52
56
|
isLeapYear = (new Date(document.getElementById('selectId1').value + '-02-29')).getMonth() === 1;
|
53
57
|
|
54
58
|
// あらたに選択された年がうるう年ではなく、選択済みの月が2月の場合、
|
@@ -90,4 +94,6 @@
|
|
90
94
|
}
|
91
95
|
dateSelect.value = selectedDate <= maxDate ? selectedDate : maxDate;
|
92
96
|
}
|
93
|
-
```
|
97
|
+
```
|
98
|
+
|
99
|
+
Mar 24, 2020 10:51 AM : コメント追加、コードの不足を修正
|