回答編集履歴

2

追記1.1

2019/10/29 05:39

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -229,3 +229,47 @@
229
229
 
230
230
 
231
231
  もっといい方法があるのかもしれませんが、私ならこういう風にするかなぁ。
232
+
233
+
234
+
235
+ 追記:
236
+
237
+ あ、忘れていた...
238
+
239
+ 呼び出し側である、<input type="button" value="-" onClick="count_down_btn3()"></input> では、
240
+
241
+
242
+
243
+ count_down_btn3関数じゃなくて、pushButton関数を呼び出してください。
244
+
245
+
246
+
247
+ 例:
248
+
249
+
250
+
251
+ ```JavaScript
252
+
253
+ <input type="button" value="-" onClick="pushButton('three')"></input>
254
+
255
+ ```
256
+
257
+
258
+
259
+ すると、
260
+
261
+
262
+
263
+ 関数Aが関数Bを呼び出している...みたいな体で書くと、
264
+
265
+
266
+
267
+ pushButton( "three" );
268
+
269
+ みたいになる。
270
+
271
+
272
+
273
+ 後から考えると、countDown_pushButton( "three" ); countUp_pushButton( "three" ); とかに分離してもいいかなぁ。
274
+
275
+ (大雑把な考え方は一緒)

1

追記1

2019/10/29 05:38

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -7,3 +7,225 @@
7
7
 
8
8
 
9
9
  知識レベルに応じた説明があるので、できるだけ「どこまで理解できたのか」「どこが不明瞭なのか」を記述しすると説明しやすいです。
10
+
11
+
12
+
13
+ --------------
14
+
15
+ [追記1]
16
+
17
+
18
+
19
+ > サンプルソースは自分で作成したものになります。
20
+
21
+
22
+
23
+ Okです。関数の組み方は...ご存じですよね?
24
+
25
+ わからないのなら、入門書(または入門サイト)をお読みください。
26
+
27
+ まずは基礎ができていないと無理ですから。
28
+
29
+
30
+
31
+ ボタンの数が多く、できるだけ汎用性を持たせた関数を作成したいということですよね。
32
+
33
+
34
+
35
+ まず、基本的な部分を考えてみましょう。
36
+
37
+
38
+
39
+ ```JavaScript
40
+
41
+ function count_up_btn1(){
42
+
43
+ //カウンタに 1 を加算
44
+
45
+ document.getElementById( "one" ).innerHTML = ++one;
46
+
47
+ document.getElementById( "total" ).innerHTML = ++total;
48
+
49
+ }
50
+
51
+ function count_down_btn1(){
52
+
53
+ //カウンタから 1 を減算
54
+
55
+ document.getElementById( "one" ).innerHTML = --one;
56
+
57
+ document.getElementById( "total" ).innerHTML = --total;
58
+
59
+ }
60
+
61
+
62
+
63
+ function count_up_btn2(){
64
+
65
+ //カウンタに 1 を加算
66
+
67
+ document.getElementById( "two" ).innerHTML = ++two;
68
+
69
+ document.getElementById( "total" ).innerHTML = ++total;
70
+
71
+ }
72
+
73
+
74
+
75
+ function count_down_btn2(){
76
+
77
+ //カウンタから 1 を減算
78
+
79
+ document.getElementById( "two" ).innerHTML = --two;
80
+
81
+ document.getElementById( "total" ).innerHTML = --total;
82
+
83
+ }
84
+
85
+
86
+
87
+ function count_up_btn3(){
88
+
89
+ //カウンタに 1 を加算
90
+
91
+ document.getElementById( "three" ).innerHTML = ++three;
92
+
93
+ document.getElementById( "total" ).innerHTML = ++total;
94
+
95
+ }
96
+
97
+
98
+
99
+ function count_down_btn3(){
100
+
101
+ //カウンタから 1 を減算
102
+
103
+ document.getElementById( "three" ).innerHTML = --three;
104
+
105
+ document.getElementById( "total" ).innerHTML = --total;
106
+
107
+ }
108
+
109
+ ```
110
+
111
+ がやりたいこと(最終的に行いたいこと)ですよね。
112
+
113
+
114
+
115
+ 共通部分を見ると、
116
+
117
+
118
+
119
+ 常に id が"one", "two", "tree" のどれかをインクリメント( ++oneとか )やデクリメント ( --one とか ) して、id がtotal のエリアを インクリメントまたはデクリメントしていますね。
120
+
121
+
122
+
123
+ つまり、共通項だけをまとめて書くと
124
+
125
+
126
+
127
+ ```ここに言語を入力
128
+
129
+ // ただし<..> とあるのは何かしらの変数または定数だとして
130
+
131
+ document.getElementById( <ID> ).innerHTML = <増減>;
132
+
133
+ document.getElementById( "total" ).innerHTML = <増減>;
134
+
135
+ ```
136
+
137
+ ですよね。
138
+
139
+
140
+
141
+ それなら、単純にこの式をコード化すればいいかと思います。
142
+
143
+
144
+
145
+ ただし、<ID> と<増減>だけが不定。
146
+
147
+ それなら、これを管理する関数 を作って、これに管理させる。
148
+
149
+
150
+
151
+ ただ、私の書き方ですと、プロトタイプっていう、ほかの言語だとクラス...を変化させたようなものを使う必要があるので、関数で結構です。
152
+
153
+ ヒント: [プロトタイプ JavaScript](https://qiita.com/howdy39/items/35729490b024ca295d6c)
154
+
155
+
156
+
157
+
158
+
159
+ ```JavaScript
160
+
161
+ // プロトタイプ NumberManagerを定義
162
+
163
+
164
+
165
+ function calcNumberWithId(id){
166
+
167
+ // 仮に "one"のときは減算で "two"なら加算すると仮定
168
+
169
+ if( id == "one" ){
170
+
171
+ // ここで one をインクリメントする
172
+
173
+ // あと total も
174
+
175
+ return one;
176
+
177
+ }else if( id == "two" ){
178
+
179
+ // ここでtwo をデクリメントする
180
+
181
+ // あと total も
182
+
183
+ return two;
184
+
185
+ }
186
+
187
+ // 処理されなかった...
188
+
189
+ return undefined;
190
+
191
+ }
192
+
193
+ ```
194
+
195
+
196
+
197
+ みたいにしておけば、
198
+
199
+
200
+
201
+ グローバルエリアとかでNumberManagerのインスタンスを生成しておいて、
202
+
203
+
204
+
205
+ ```JavaScript
206
+
207
+ // ただし<..> とあるのは何かしらの変数または定数だとして
208
+
209
+ // また numberManager は NumberManagerのオブジェクトだとして
210
+
211
+ function pushButton( id ){
212
+
213
+ // 関数calcNumberWithIdを介して操作し、戻り値のnumを設定する
214
+
215
+ var num = calcNumberWithId(id);
216
+
217
+ document.getElementById( id ).innerHTML = num;
218
+
219
+ document.getElementById( "total" ).innerHTML = total;
220
+
221
+ }
222
+
223
+ ```
224
+
225
+
226
+
227
+ みたいに簡略化できる。
228
+
229
+
230
+
231
+ もっといい方法があるのかもしれませんが、私ならこういう風にするかなぁ。