回答編集履歴
5
おまけのおまけ追加
test
CHANGED
File without changes
|
4
おまけのおまけ追加
test
CHANGED
@@ -217,3 +217,45 @@
|
|
217
217
|
console.log(isValidDate(2000, 4, 32)); // false
|
218
218
|
|
219
219
|
```
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
---
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
【おまけのおまけ】 エラーが出たら消えないのでそこも分かる方がいらっしゃったら教えて頂きたいです。
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
JavaScriptが出来る事は
|
232
|
+
|
233
|
+
HTMLの構造をA→Bに書き換えることだけです。
|
234
|
+
|
235
|
+
壊したらもう元には戻りません。
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
これはJavaScriptが命令型言語なので指示待ち人間なわけですよ。
|
240
|
+
|
241
|
+
指示を出すからには、「妥当な日付になったら戻れ!」という指示が必要になります。
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
エラーを表示する為に`elm.innerHTML = "エラーですよ"`みたいな事をやってますよね?
|
246
|
+
|
247
|
+
だから日付が妥当だった場合は、自らの手で`elm.innerHTML = ""`と消さなければなりません。
|
248
|
+
|
249
|
+
これはjQueryへ移行しても記述が簡素になってちょっと楽になる程度で変わりません。
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
最終的にはテンプレートを渡して、
|
254
|
+
|
255
|
+
「Aの変数を見て、Aの変数が変更されたら勝手に最善の形に書き換わってくれ!」という仕組みを構築するのが終着点です。
|
256
|
+
|
257
|
+
これを実現するのがReactやVue.js等のJSフレームワークを駆使した開発です。
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
恐らく今後の講義として追加されると思うので楽しみにしてください。
|
3
おまけのおまけ追加
test
CHANGED
File without changes
|
2
おまけ追加
test
CHANGED
File without changes
|
1
おまけ追加
test
CHANGED
@@ -143,3 +143,77 @@
|
|
143
143
|
正しい日付ですか?と聞いてfalseが帰ってきたら不正な数値と返すだけなので
|
144
144
|
|
145
145
|
後々の処理を考えた時は絶対にライブラリ使う方が良いです。
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
---
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
【おまけ】 カイジくんが本当に欲しいのはこっち
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
> 年月日の入力をチェックしてエラーを出している
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
閏年なんてどうでも良いんですよ。
|
162
|
+
|
163
|
+
妥当な日付か否かが知りたいんでしょ?
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
まぁ、これ一択でしょうね。
|
168
|
+
|
169
|
+
数値へのキャストは[Number](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number)を使いましょう。
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
```js
|
174
|
+
|
175
|
+
// 文字列を数値にしたい
|
176
|
+
|
177
|
+
console.log(Number("2000")); // 2000
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
function isValidDate(year, month, day) {
|
182
|
+
|
183
|
+
var d = (new Date(year, month - 1, day));
|
184
|
+
|
185
|
+
return year == d.getFullYear()
|
186
|
+
|
187
|
+
&& month - 1 == d.getMonth()
|
188
|
+
|
189
|
+
&& day == d.getDate();
|
190
|
+
|
191
|
+
}
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
[2400, 2300, 2200, 2004, 2001].forEach(function(year){
|
196
|
+
|
197
|
+
console.log(isValidDate(year, 2, 29));
|
198
|
+
|
199
|
+
});
|
200
|
+
|
201
|
+
// true
|
202
|
+
|
203
|
+
// false
|
204
|
+
|
205
|
+
// false
|
206
|
+
|
207
|
+
// true
|
208
|
+
|
209
|
+
// false
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
// 完全に存在しない不正な日付も繰り上がったりするので
|
214
|
+
|
215
|
+
console.log(new Date(2000, 3, 32)); // Tue May 02 2000 00:00:00 GMT+0900 (日本標準時)
|
216
|
+
|
217
|
+
console.log(isValidDate(2000, 4, 32)); // false
|
218
|
+
|
219
|
+
```
|