回答編集履歴
3
console.logに修正
answer
CHANGED
@@ -30,10 +30,10 @@
|
|
30
30
|
|
31
31
|
if (inputOK) {
|
32
32
|
// いずれかの入力があった
|
33
|
-
|
33
|
+
console.log('OK牧場');
|
34
34
|
} else {
|
35
35
|
// 全ての入力が未入力、もしくは0だった
|
36
|
-
|
36
|
+
console.log('XXXを入力してください。');
|
37
37
|
}
|
38
38
|
```
|
39
39
|
|
@@ -46,29 +46,29 @@
|
|
46
46
|
```javascript
|
47
47
|
// bbbが未入力である
|
48
48
|
if (aaa==""){
|
49
|
-
|
49
|
+
console.log('XXXを入力してください');
|
50
50
|
}else if (aaa=="0"{
|
51
|
-
|
51
|
+
console.log('XXXを入力してください');
|
52
52
|
}else if (bbb==""){
|
53
53
|
// が通る
|
54
|
-
|
54
|
+
console.log('XXXを入力してください');
|
55
55
|
}else if (bbb=="0"){
|
56
56
|
// ここ以降はもう通らない。そのため、OK牧場にも当然到達しない
|
57
|
-
|
57
|
+
console.log('XXXを入力してください');
|
58
58
|
}else if (ccc==""){
|
59
|
-
|
59
|
+
console.log('XXXを入力してください');
|
60
60
|
}else if (ccc=="0"){
|
61
|
-
|
61
|
+
console.log('XXXを入力してください');
|
62
62
|
}else if (ddd==""){
|
63
|
-
|
63
|
+
console.log('XXXを入力してください');
|
64
64
|
}else if (ddd=="0"){
|
65
|
-
|
65
|
+
console.log('XXXを入力してください');
|
66
66
|
}else if (eee==""){
|
67
|
-
|
67
|
+
console.log('XXXを入力してください');
|
68
68
|
}else if (eee=="0"){
|
69
|
-
|
69
|
+
console.log('XXXを入力してください');
|
70
70
|
}else{
|
71
|
-
|
71
|
+
console.log('OK牧場');
|
72
72
|
}
|
73
73
|
```
|
74
74
|
|
@@ -83,9 +83,9 @@
|
|
83
83
|
(ddd == "" || ddd == "0") &&
|
84
84
|
(eee == "" || eee == "0")
|
85
85
|
){
|
86
|
-
|
86
|
+
console.log('XXXを入力してください');
|
87
87
|
} else {
|
88
|
-
|
88
|
+
console.log('OK牧場');
|
89
89
|
}
|
90
90
|
```
|
91
91
|
|
2
なぜ質問のコードでうまくいかないかを記載
answer
CHANGED
@@ -35,4 +35,59 @@
|
|
35
35
|
// 全ての入力が未入力、もしくは0だった
|
36
36
|
donsole.log('XXXを入力してください。');
|
37
37
|
}
|
38
|
-
```
|
38
|
+
```
|
39
|
+
|
40
|
+
# なぜ質問のコードでは理想の挙動にならないのかの解説
|
41
|
+
では、なぜ、質問のコードではうまくいかないのか。
|
42
|
+
**`if`は、条件が真となったら、それ以降の条件文は通らないから**です。
|
43
|
+
|
44
|
+
例えば、`bbb`が未入力だったとしましょう。そうするとどうなるか。
|
45
|
+
|
46
|
+
```javascript
|
47
|
+
// bbbが未入力である
|
48
|
+
if (aaa==""){
|
49
|
+
donsole.log('XXXを入力してください');
|
50
|
+
}else if (aaa=="0"{
|
51
|
+
donsole.log('XXXを入力してください');
|
52
|
+
}else if (bbb==""){
|
53
|
+
// が通る
|
54
|
+
donsole.log('XXXを入力してください');
|
55
|
+
}else if (bbb=="0"){
|
56
|
+
// ここ以降はもう通らない。そのため、OK牧場にも当然到達しない
|
57
|
+
donsole.log('XXXを入力してください');
|
58
|
+
}else if (ccc==""){
|
59
|
+
donsole.log('XXXを入力してください');
|
60
|
+
}else if (ccc=="0"){
|
61
|
+
donsole.log('XXXを入力してください');
|
62
|
+
}else if (ddd==""){
|
63
|
+
donsole.log('XXXを入力してください');
|
64
|
+
}else if (ddd=="0"){
|
65
|
+
donsole.log('XXXを入力してください');
|
66
|
+
}else if (eee==""){
|
67
|
+
donsole.log('XXXを入力してください');
|
68
|
+
}else if (eee=="0"){
|
69
|
+
donsole.log('XXXを入力してください');
|
70
|
+
}else{
|
71
|
+
donsole.log('OK牧場');
|
72
|
+
}
|
73
|
+
```
|
74
|
+
|
75
|
+
となるため、`else if (bbb == "")`以降の`else if`条件は適用されません。
|
76
|
+
よって、あくまで`if`文でやるなら、下記のようになります。
|
77
|
+
|
78
|
+
```javascript
|
79
|
+
if (
|
80
|
+
(aaa == "" || aaa == "0") &&
|
81
|
+
(bbb == "" || bbb == "0") &&
|
82
|
+
(ccc == "" || ccc == "0") &&
|
83
|
+
(ddd == "" || ddd == "0") &&
|
84
|
+
(eee == "" || eee == "0")
|
85
|
+
){
|
86
|
+
donsole.log('XXXを入力してください');
|
87
|
+
} else {
|
88
|
+
donsole.log('OK牧場');
|
89
|
+
}
|
90
|
+
```
|
91
|
+
|
92
|
+
しかし、これでは、要素が増減するたびに、構文を変えねばならないので、
|
93
|
+
私の構文のように、要素の増減にも自動で処理を行える形の方がよいかと思います。
|
1
質問を勘違いしていたので、修正
answer
CHANGED
@@ -14,20 +14,25 @@
|
|
14
14
|
```javascript
|
15
15
|
const inputs = document.querySelectorAll('.numInput');
|
16
16
|
|
17
|
-
let unInput = '';
|
17
|
+
// let unInput = '';
|
18
18
|
|
19
|
+
// some関数は、配列の要素を走査し、一個でもtrueがあると処理を終了し、論理値を返します。
|
20
|
+
// つまり、false(入力がない、または0)である限り、回り続け、全てが、該当の入力なら、falseを返してくれます。
|
21
|
+
// そして、この記述なら、NodeListにもsome関数を使用できます。
|
19
|
-
const inputOK = [].
|
22
|
+
const inputOK = [].some.call(inputs, elm => {
|
20
|
-
if (elm.value
|
23
|
+
if (!elm.value || isNaN(elm.value) || Number(elm.value) == 0) {
|
24
|
+
return false;
|
25
|
+
} else {
|
26
|
+
// unInput = elm.name;
|
21
27
|
return true;
|
22
|
-
} else {
|
23
|
-
unInput = elm.name;
|
24
|
-
return false;
|
25
28
|
}
|
26
29
|
});
|
27
30
|
|
28
31
|
if (inputOK) {
|
32
|
+
// いずれかの入力があった
|
29
33
|
donsole.log('OK牧場');
|
30
34
|
} else {
|
35
|
+
// 全ての入力が未入力、もしくは0だった
|
31
|
-
donsole.log(
|
36
|
+
donsole.log('XXXを入力してください。');
|
32
37
|
}
|
33
38
|
```
|