回答編集履歴

1

元のコードを修正してみました。

2020/07/19 03:39

投稿

Jon_do
Jon_do

スコア1373

test CHANGED
@@ -1,4 +1,6 @@
1
- 自分ならこうするという実例です
1
+ まずは自分ならこうするという実例です
2
+
3
+ <script>
2
4
 
3
5
  //整数をチェックする関数
4
6
 
@@ -27,3 +29,141 @@
27
29
  checkNum();
28
30
 
29
31
  }, false);
32
+
33
+ </script>
34
+
35
+
36
+
37
+ /*追記*/
38
+
39
+ 元のコードを修正してみました。
40
+
41
+
42
+
43
+ <script>
44
+
45
+ //inputのidを取得
46
+
47
+ const fizzNum = document.getElementById('fizz');
48
+
49
+
50
+
51
+ //整数をチェックする関数
52
+
53
+ function isNumber(numVal) {
54
+
55
+
56
+
57
+ /*
58
+
59
+
60
+
61
+ * var pattern = /^[-]?([1-9]\d*|0)(.\d+)?$/;
62
+
63
+
64
+
65
+ 1つ目の間違いはここです。これでは整数ではなく
66
+
67
+ 少数や-1なども許可してしまいます。ほかの方も言っている通り
68
+
69
+ 整数の定義によりますが、今回は半角かつ整数の数字のみ、001などは
70
+
71
+ 許容しないようにしてみました。
72
+
73
+ ※varはなるべく使わないほうが良いのでconstにしました。
74
+
75
+
76
+
77
+ */
78
+
79
+
80
+
81
+ const pattern = /^([1-9]\d*|0)$/;
82
+
83
+
84
+
85
+ /*
86
+
87
+
88
+
89
+ * return pattern.test(numVal);
90
+
91
+
92
+
93
+ 二つ目の間違いはここです。
94
+
95
+ これでは、fizzNumを参照してしまい、
96
+
97
+ 入力した値は参照されません。
98
+
99
+ 入力した値を参照するため .valueを追加します。
100
+
101
+
102
+
103
+ */
104
+
105
+
106
+
107
+ return pattern.test(numVal.value);
108
+
109
+
110
+
111
+ }
112
+
113
+
114
+
115
+ /*
116
+
117
+
118
+
119
+ * //戻り値を変数に格納
120
+
121
+ * let integerCheck = isNumber(fizzNum);
122
+
123
+
124
+
125
+ ここが最後の間違いです。これでは入力する前にisNumber関数を
126
+
127
+ 実行してしまいます。そのためここは記述自体を削除します。
128
+
129
+
130
+
131
+ */
132
+
133
+
134
+
135
+ //クリック時の処理
136
+
137
+ btn.addEventListener('click', () => {
138
+
139
+
140
+
141
+ /*
142
+
143
+ クリックした時点でisNumber関数を実行するため
144
+
145
+ 下記にintegerCheckを移動しました。※letである必要はないのでconstにしました。
146
+
147
+ */
148
+
149
+
150
+
151
+ const integerCheck = isNumber(fizzNum);
152
+
153
+
154
+
155
+ if (integerCheck == true) {
156
+
157
+ alert('整数値です');
158
+
159
+ } else if (integerCheck == false) {
160
+
161
+ alert('整数値ではありません');
162
+
163
+ }
164
+
165
+ }, false);
166
+
167
+
168
+
169
+ </script>