teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コメント追加、コードの不足を修正

2020/03/24 01:51

投稿

thyda.eiqau
thyda.eiqau

スコア2982

answer CHANGED
@@ -38,17 +38,21 @@
38
38
 
39
39
  // 日の初期設定
40
40
  const dateSelect = document.getElementById('selectId3');
41
- // 要素の作成は changeSelect2() とやることは同じなので、そちらを呼び出すだけにする
41
+ // 要素の作成は changeSelect1(), changeSelect2() とやることは同じなので、
42
+ // そちらを呼び出すだけにする
42
- changeSelect2();
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') したき、自動的に3月1日になっ
51
+ // うるう年ではない年、たとえば2019年で new Date('2019-02-29') と
52
+ // Dateのインスタンスを生成したとき、そのインスタンスが示す日付は自動的に
53
+ // 3月1日になって、 getMonth() の値が3月になる。
50
- // getMonth() の値が3月になる、つまり、(new Date(xxxx-02-29)).getMonth() が
54
+ // つまり、「うるう年か?」 は、「(new Date(xxxx-02-29)).getMonth() が 3月か?」
51
- // 2月ならうるう年ではなし、3月ならうう年
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 : コメント追加、コードの不足を修正