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

回答編集履歴

3

console.logに修正

2021/03/26 02:15

投稿

miyabi_pudding
miyabi_pudding

スコア9572

answer CHANGED
@@ -30,10 +30,10 @@
30
30
 
31
31
  if (inputOK) {
32
32
  // いずれかの入力があった
33
- donsole.log('OK牧場');
33
+ console.log('OK牧場');
34
34
  } else {
35
35
  // 全ての入力が未入力、もしくは0だった
36
- donsole.log('XXXを入力してください。');
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
- donsole.log('XXXを入力してください');
49
+ console.log('XXXを入力してください');
50
50
  }else if (aaa=="0"{
51
- donsole.log('XXXを入力してください');
51
+ console.log('XXXを入力してください');
52
52
  }else if (bbb==""){
53
53
  // が通る
54
- donsole.log('XXXを入力してください');
54
+ console.log('XXXを入力してください');
55
55
  }else if (bbb=="0"){
56
56
  // ここ以降はもう通らない。そのため、OK牧場にも当然到達しない
57
- donsole.log('XXXを入力してください');
57
+ console.log('XXXを入力してください');
58
58
  }else if (ccc==""){
59
- donsole.log('XXXを入力してください');
59
+ console.log('XXXを入力してください');
60
60
  }else if (ccc=="0"){
61
- donsole.log('XXXを入力してください');
61
+ console.log('XXXを入力してください');
62
62
  }else if (ddd==""){
63
- donsole.log('XXXを入力してください');
63
+ console.log('XXXを入力してください');
64
64
  }else if (ddd=="0"){
65
- donsole.log('XXXを入力してください');
65
+ console.log('XXXを入力してください');
66
66
  }else if (eee==""){
67
- donsole.log('XXXを入力してください');
67
+ console.log('XXXを入力してください');
68
68
  }else if (eee=="0"){
69
- donsole.log('XXXを入力してください');
69
+ console.log('XXXを入力してください');
70
70
  }else{
71
- donsole.log('OK牧場');
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
- donsole.log('XXXを入力してください');
86
+ console.log('XXXを入力してください');
87
87
  } else {
88
- donsole.log('OK牧場');
88
+ console.log('OK牧場');
89
89
  }
90
90
  ```
91
91
 

2

なぜ質問のコードでうまくいかないかを記載

2021/03/26 02:14

投稿

miyabi_pudding
miyabi_pudding

スコア9572

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

質問を勘違いしていたので、修正

2021/03/26 02:11

投稿

miyabi_pudding
miyabi_pudding

スコア9572

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 = [].every.call(inputs, elm => {
22
+ const inputOK = [].some.call(inputs, elm => {
20
- if (elm.value && !isNaN(elm.value) && Number(elm.value) > 0) {
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(unInput + 'を入力してください。');
36
+ donsole.log('XXXを入力してください。');
32
37
  }
33
38
  ```