質問編集履歴

7

o

2022/06/14 03:10

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -5,226 +5,3 @@
5
5
  回答者の方々に指摘されたところを直してみたのですが、うまくいかず、元に戻したのが下記のjQueryです。
6
6
 
7
7
  jqueryをどう修正すれば電卓ができるようになるのかアドバイスいただきたいです。
8
-
9
- ```html
10
- <body>
11
- <div class="calculator">
12
- <div id="display" data-value="0">0</div>
13
- <div class="comm">
14
- <div class="command is-2col" data-value="Clear">Clear</div>
15
- <div class="command empty"></div>
16
- <div class="command is-operator" data-value="÷">÷</div>
17
- <div class="command" data-value="7">7</div>
18
- <div class="command" data-value="8">8</div>
19
- <div class="command" data-value="9">9</div>
20
- <div class="command is-operator" data-value="×">×</div>
21
- <div class="command" data-value="4">4</div>
22
- <div class="command" data-value="5">5</div>
23
- <div class="command" data-value="6">6</div>
24
- <div class="command is-operator" data-value="-">ー</div>
25
- <div class="command" data-value="1">1</div>
26
- <div class="command" data-value="2">2</div>
27
- <div class="command" data-value="3">3</div>
28
- <div class="command is-operator" data-value="+">+</div>
29
- <div class="command is-2col" data-value="00">00</div>
30
- <div class="command" data-value="0">0</div>
31
- <div class="command is-equal" data-value="=">=</div>
32
- </div>
33
- </div>
34
-
35
- </body>
36
- ```
37
- ```css
38
- .calculator {
39
- width: 205px;
40
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
41
- margin: auto;
42
- }
43
-
44
- #display {
45
- width: 205px;
46
- background: #5b5b5b;
47
- text-align: right;
48
- border: 1px solid #000;
49
- box-sizing: border-box;
50
- color: #fff;
51
- font-size: 25px;
52
- padding: 5px 10px;
53
- }
54
-
55
- .display.flashing {
56
- animation-name: flash;
57
- animation-duration: 0.1s;
58
- }
59
-
60
- @keyframes flash {
61
- 0% {
62
- color: #5b5b5b;
63
- }
64
- 90% {
65
- color: #5b5b5b;
66
- }
67
- 100% {
68
- color: #fff;
69
- }
70
- }
71
-
72
- .comm {
73
- width: 204px;
74
- background: #000;
75
- display: flex;
76
- flex-wrap: wrap;
77
- padding-left: 1px;
78
- }
79
-
80
- .command {
81
- width: 50px;
82
- height: 45px;
83
- background: #ddd;
84
- margin: 0 1px 1px 0;
85
- text-align: center;
86
- padding-top: 10px;
87
- box-sizing: border-box;
88
- font-size: 18px;
89
- }
90
-
91
- .command.is-operator,
92
- .command.is-equal {
93
- background: orange;
94
- color: #fff;
95
- }
96
-
97
- .command.is-2col {
98
- width: 101px;
99
- }
100
-
101
- .command:active {
102
- background: #bbb;
103
- }
104
-
105
- .command.is-operator:active,
106
- .command.is-equal:active {
107
- background: #d37e00;
108
- }
109
-
110
- .command.empty:active {
111
- background: #ddd;
112
- }
113
-
114
- #debug {
115
- display: none;
116
- }
117
-
118
- ```
119
- ```jQuery
120
- $(document).ready(function(){
121
- //domが読み込まれたら中の処理を実行
122
-
123
- $('.command').on('click',function() {
124
- let button_value = $(this).data('value');
125
- let display = $('#display');
126
- display.text(button_value);
127
-
128
- if (button_value === "clear") {
129
- //押したのがclearなら、displayの中身がinnerHTMLで0に変わる
130
- display.text("0");
131
-
132
- }else if (button_value === "=") {
133
- //押したのが=なら、displayの中身をnew funcで計算して値を返す
134
- replace_value = display.html(replaceAll("×", "*").replaceAll("÷", "/"));
135
-
136
- let replace_value = $('.is-operator').each(function(){
137
- let txt = $(this).html();
138
- $(this).html(
139
- txt.replace(/÷/g,'/').replace(/×/g,'*')
140
- );
141
- //console.log(replace_value)
142
- });
143
-
144
- display.text(new Function ("return " + replace_value))();
145
- //押されたキーの内容を判別せず、単純にそのまま文字列として記憶して、計算時に、そのまま文字列の計算結果を返すようにreturnの文字列を付け加える)
146
-
147
- }else if (display === "0" || display === "00") {
148
- if (!isNaN(button_value) || button_value === "-") {
149
- display.html(button_value);
150
- }
151
- //ディスプレイに0か00が表示される時は、「0」「00」「記号」は押されても入れない
152
- //ただし、「数値」が押された時は入れるようする
153
- //!isNaN(button_value)で押されたのが「数値」かどうか判断できる
154
- //又はbutton_valueが−の時は-と表示する
155
- //数値が押された時だけresult.innerHTML = button_valueを実行
156
-
157
- }else {
158
- if (isNaN(button_value)) {
159
- let migihashi = display.slice(-1);
160
- if (!isNaN(migihashi)) {
161
- display.text() += button_value;
162
- }
163
- }else {
164
- display.text() += button_value;
165
- //++など複数して出ないようにする
166
- //isNaN(button_value)で押されたのが記号か判断
167
- //数値を入力した時は一番下のelseのdisplay.innerHTML += button_valueで数値を入力して終了
168
- //isNaN(button_value)で押されたのが記号と判断した時、記号を入力する条件はディスプレイ右端が数値である必要がある
169
- //display.innerHTML.slice(-1)で右端の値を取って!isNaN(migihashi)で右端が数値か判断
170
- //右端が数値、押されたのが記号の場合だけdisplay.innerHTML += button_valueで計算実行
171
-
172
- }
173
- }
174
- });
175
- });
176
- ```
177
-
178
- jsでやっていた時のhtmlとjsです。(cssは.commが.commandsになっただけなのでカットします)
179
- ```html
180
- <body class="body1">
181
- <div class="calculator">
182
- <div id="display" value="0">0</div>
183
- <div class="commands">
184
- <div class="command is-2col" onclick="calc_func(this)" value="clear">clear</div>
185
- <div class="command empty"></div>
186
- <div class="command is-operator" onclick="calc_func(this)" value="/">÷</div>
187
- <div class="command" onclick="calc_func(this)" value="7">7</div>
188
- <div class="command" onclick="calc_func(this)" value="8">8</div>
189
- <div class="command" onclick="calc_func(this)" value="9">9</div>
190
- <div class="command is-operator" onclick="calc_func(this)" value="*">×</div>
191
- <div class="command" onclick="calc_func(this)" value="4">4</div>
192
- <div class="command" onclick="calc_func(this)" value="5">5</div>
193
- <div class="command" onclick="calc_func(this)" value="6">6</div>
194
- <div class="command is-operator" onclick="calc_func(this)" value="-">-</div>
195
- <div class="command" onclick="calc_func(this)" value="1">1</div>
196
- <div class="command" onclick="calc_func(this)" value="2">2</div>
197
- <div class="command" onclick="calc_func(this)" value="3">3</div>
198
- <div class="command is-operator" onclick="calc_func(this)" value="+">+</div>
199
- <div class="command is-2col" onclick="calc_func(this)" value="00">00</div>
200
- <div class="command" onclick="calc_func(this)" value="0">0</div>
201
- <div class="command is-equal" onclick="calc_func(this)" value="=">=</div>
202
- </div>
203
- </div>
204
- <body>
205
- ```
206
- ```javascript
207
- function calc_func(button) {
208
- var display = document.getElementById("display");
209
- var button_value = button.innerHTML;
210
- if (button_value === "clear") {
211
- display.innerHTML = "0";
212
- }else if (button_value === "=") {
213
- var replace_value = display.innerHTML.replaceAll("×", "*").replaceAll("÷", "/");
214
- display.innerHTML = (new Function ("return " + replace_value))();
215
- }else if (display.innerHTML === "0" || display.innerHTML === "00") {
216
- if (!isNaN(button_value) || button_value === "-") {
217
- display.innerHTML = button_value;
218
- }
219
- }else {
220
- if (isNaN(button_value)) {
221
- var migihashi = display.innerHTML.slice(-1);
222
- if (!isNaN(migihashi)) {
223
- display.innerHTML += button_value;
224
- }
225
- }else {
226
- display.innerHTML += button_value;
227
- }
228
- }
229
- }
230
- ```

6

コード

2022/06/06 08:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -228,31 +228,3 @@
228
228
  }
229
229
  }
230
230
  ```
231
- ```jQuery
232
- $(document).ready(function(){
233
- $("[class *='command']").on('click',function() {
234
- let display = $('#display').val();
235
- let button_value = $(this).attr('value');
236
- $('#display').text(button_value);
237
- if (button_value === "clear") {
238
- $('#display').html("0");
239
- }else if (button_value === "=") {
240
- let replace_value = $('#display').text($('÷', '/').replaceAll('×','*'));
241
- $('#display').html = (new Function ("return " + replace_value))();
242
- }else if (display.html === "0" || display.html === "00") {
243
- if (!isNaN(button_value) || button_value === "-") {
244
- $('#display').html(button_value);
245
- }
246
- }else {
247
- if (isNaN(button_value)) {
248
- let migihashi = $('#display').slice(-1);
249
- if (!isNaN(migihashi)) {
250
- $('#display') += button_value;
251
- }
252
- }else {
253
- display += button_value;
254
- }
255
- }
256
- });
257
- });
258
- ```

5

コード

2022/06/06 08:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,6 +148,12 @@
148
148
  if (!isNaN(button_value) || button_value === "-") {
149
149
  display.html(button_value);
150
150
  }
151
+ //ディスプレイに0か00が表示される時は、「0」「00」「記号」は押されても入れない
152
+ //ただし、「数値」が押された時は入れるようする
153
+ //!isNaN(button_value)で押されたのが「数値」かどうか判断できる
154
+ //又はbutton_valueが−の時は-と表示する
155
+ //数値が押された時だけresult.innerHTML = button_valueを実行
156
+
151
157
  }else {
152
158
  if (isNaN(button_value)) {
153
159
  let migihashi = display.slice(-1);
@@ -156,7 +162,13 @@
156
162
  }
157
163
  }else {
158
164
  display.text() += button_value;
159
- //それ以外の動き 
165
+ //++など複数して出ないようにする
166
+ //isNaN(button_value)で押されたのが記号か判断
167
+ //数値を入力した時は一番下のelseのdisplay.innerHTML += button_valueで数値を入力して終了
168
+ //isNaN(button_value)で押されたのが記号と判断した時、記号を入力する条件はディスプレイ右端が数値である必要がある
169
+ //display.innerHTML.slice(-1)で右端の値を取って!isNaN(migihashi)で右端が数値か判断
170
+ //右端が数値、押されたのが記号の場合だけdisplay.innerHTML += button_valueで計算実行
171
+
160
172
  }
161
173
  }
162
174
  });

4

コード

2022/06/06 08:00

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -163,7 +163,7 @@
163
163
  });
164
164
  ```
165
165
 
166
- jsでやっていた時のhtmlとjsです。(cssは.commが.commands同じになっただけなのでカットします)
166
+ jsでやっていた時のhtmlとjsです。(cssは.commが.commandsになっただけなのでカットします)
167
167
  ```html
168
168
  <body class="body1">
169
169
  <div class="calculator">

3

コード

2022/06/06 07:59

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,40 +1,37 @@
1
1
  現在jsで作った電卓をjQueryに置き換えるのをやっているのですが、jQueryを習って間もないため全然わからず困っています。
2
- 下記に記載した通りjQueryへの書き換えを少しやってみたのですが、
2
+ 下記に記載した通りjQueryへの書き換えを少しやってみたのですが、値は取れているものの、数字を押してもディスプレイに表示されるのは今押したもののみで、計算もされません。
3
- thisを使ってvalueをとってきて、
4
- 数字や記号はdisplayに出るようになったのですが、計算はされず、=を押した時もエラー(Syntax error, unrecognized expression: /
5
- at Function.st.error)が出しまいま
3
+ また×や÷を*や/にし計算する処理も反映されていません
6
- 多分let replace_value = $('#display').text($('÷', '/').replaceAll('×','*')); がおかしいのだと思うのですが、何がおかしいのかがわかりません。
7
-
8
- jsのは、現在記載しているHTMLのdivにそれぞれonclickcalc_func(this)をつけていました
4
+ =を押したもReferenceError: replaceAll is not definedが出しまいま
9
-
10
- 下記のjsコードをJQueryバージョンにして、実装るにはどうすれば良いのでしょうか?
5
+ 回答者の方々に指摘されたところを直してみたのですが、うまくいかず、元に戻したのが下記のjQuery
6
+
11
- または、私が書いたjqueryをどう修正すれば計算できるようになるのかアドバイスいただきたいです。
7
+ jqueryをどう修正すれば電卓ができるようになるのかアドバイスいただきたいです。
12
8
 
13
9
  ```html
14
- <body class="body1">
10
+ <body>
15
11
  <div class="calculator">
16
- <div id="display" value="0">0</div>
12
+ <div id="display" data-value="0">0</div>
17
13
  <div class="comm">
18
- <div class="command is-2col" value="clear">clear</div>
14
+ <div class="command is-2col" data-value="Clear">Clear</div>
19
- <div class="command empty"></div>
15
+ <div class="command empty"></div>
20
- <div class="command is-operator" value="/">÷</div>
16
+ <div class="command is-operator" data-value="÷">÷</div>
21
- <div class="command" value="7">7</div>
17
+ <div class="command" data-value="7">7</div>
22
- <div class="command" value="8">8</div>
18
+ <div class="command" data-value="8">8</div>
23
- <div class="command" value="9">9</div>
19
+ <div class="command" data-value="9">9</div>
24
- <div class="command is-operator" value="*">×</div>
20
+ <div class="command is-operator" data-value="×">×</div>
25
- <div class="command" value="4">4</div>
21
+ <div class="command" data-value="4">4</div>
26
- <div class="command" value="5">5</div>
22
+ <div class="command" data-value="5">5</div>
27
- <div class="command" value="6">6</div>
23
+ <div class="command" data-value="6">6</div>
28
- <div class="command is-operator" value="-">-</div>
24
+ <div class="command is-operator" data-value="-"></div>
29
- <div class="command" value="1">1</div>
25
+ <div class="command" data-value="1">1</div>
30
- <div class="command" value="2">2</div>
26
+ <div class="command" data-value="2">2</div>
31
- <div class="command" value="3">3</div>
27
+ <div class="command" data-value="3">3</div>
32
- <div class="command is-operator" value="+">+</div>
28
+ <div class="command is-operator" data-value="+"></div>
33
- <div class="command is-2col" value="00">00</div>
29
+ <div class="command is-2col" data-value="00">00</div>
34
- <div class="command" value="0">0</div>
30
+ <div class="command" data-value="0">0</div>
35
- <div class="command is-equal" value="=">=</div>
31
+ <div class="command is-equal" data-value="="></div>
36
32
  </div>
37
33
  </div>
34
+
38
35
  </body>
39
36
  ```
40
37
  ```css
@@ -118,6 +115,81 @@
118
115
  display: none;
119
116
  }
120
117
 
118
+ ```
119
+ ```jQuery
120
+ $(document).ready(function(){
121
+ //domが読み込まれたら中の処理を実行
122
+
123
+ $('.command').on('click',function() {
124
+ let button_value = $(this).data('value');
125
+ let display = $('#display');
126
+ display.text(button_value);
127
+
128
+ if (button_value === "clear") {
129
+ //押したのがclearなら、displayの中身がinnerHTMLで0に変わる
130
+ display.text("0");
131
+
132
+ }else if (button_value === "=") {
133
+ //押したのが=なら、displayの中身をnew funcで計算して値を返す
134
+ replace_value = display.html(replaceAll("×", "*").replaceAll("÷", "/"));
135
+
136
+ let replace_value = $('.is-operator').each(function(){
137
+ let txt = $(this).html();
138
+ $(this).html(
139
+ txt.replace(/÷/g,'/').replace(/×/g,'*')
140
+ );
141
+ //console.log(replace_value)
142
+ });
143
+
144
+ display.text(new Function ("return " + replace_value))();
145
+ //押されたキーの内容を判別せず、単純にそのまま文字列として記憶して、計算時に、そのまま文字列の計算結果を返すようにreturnの文字列を付け加える)
146
+
147
+ }else if (display === "0" || display === "00") {
148
+ if (!isNaN(button_value) || button_value === "-") {
149
+ display.html(button_value);
150
+ }
151
+ }else {
152
+ if (isNaN(button_value)) {
153
+ let migihashi = display.slice(-1);
154
+ if (!isNaN(migihashi)) {
155
+ display.text() += button_value;
156
+ }
157
+ }else {
158
+ display.text() += button_value;
159
+ //それ以外の動き 
160
+ }
161
+ }
162
+ });
163
+ });
164
+ ```
165
+
166
+ jsでやっていた時のhtmlとjsです。(cssは.commが.commands同じになっただけなのでカットします)
167
+ ```html
168
+ <body class="body1">
169
+ <div class="calculator">
170
+ <div id="display" value="0">0</div>
171
+ <div class="commands">
172
+ <div class="command is-2col" onclick="calc_func(this)" value="clear">clear</div>
173
+ <div class="command empty"></div>
174
+ <div class="command is-operator" onclick="calc_func(this)" value="/">÷</div>
175
+ <div class="command" onclick="calc_func(this)" value="7">7</div>
176
+ <div class="command" onclick="calc_func(this)" value="8">8</div>
177
+ <div class="command" onclick="calc_func(this)" value="9">9</div>
178
+ <div class="command is-operator" onclick="calc_func(this)" value="*">×</div>
179
+ <div class="command" onclick="calc_func(this)" value="4">4</div>
180
+ <div class="command" onclick="calc_func(this)" value="5">5</div>
181
+ <div class="command" onclick="calc_func(this)" value="6">6</div>
182
+ <div class="command is-operator" onclick="calc_func(this)" value="-">-</div>
183
+ <div class="command" onclick="calc_func(this)" value="1">1</div>
184
+ <div class="command" onclick="calc_func(this)" value="2">2</div>
185
+ <div class="command" onclick="calc_func(this)" value="3">3</div>
186
+ <div class="command is-operator" onclick="calc_func(this)" value="+">+</div>
187
+ <div class="command is-2col" onclick="calc_func(this)" value="00">00</div>
188
+ <div class="command" onclick="calc_func(this)" value="0">0</div>
189
+ <div class="command is-equal" onclick="calc_func(this)" value="=">=</div>
190
+ </div>
191
+ </div>
192
+ <body>
121
193
  ```
122
194
  ```javascript
123
195
  function calc_func(button) {

2

2022/06/01 02:28

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,15 @@
1
1
  現在jsで作った電卓をjQueryに置き換えるのをやっているのですが、jQueryを習って間もないため全然わからず困っています。
2
+ 下記に記載した通りjQueryへの書き換えを少しやってみたのですが、
3
+ thisを使ってvalueをとってきて、
4
+ 数字や記号はdisplayに出るようになったのですが、計算はされず、=を押した時もエラー(Syntax error, unrecognized expression: /
2
- 現在少しいじってみたのでが、てんでできませんでした
5
+ at Function.st.error)が出てす。
6
+ 多分let replace_value = $('#display').text($('÷', '/').replaceAll('×','*')); がおかしいのだと思うのですが、何がおかしいのかがわかりません。
7
+
3
8
  jsの時は、現在記載しているHTMLのdivにそれぞれonclickcalc_func(this)をつけていました。
4
9
 
5
- 下記のコードをJQueryバージョンにして、実装するにはどうすれば良いのでしょうか?
10
+ 下記のjsコードをJQueryバージョンにして、実装するにはどうすれば良いのでしょうか?
11
+ または、私が書いたjqueryをどう修正すれば計算できるようになるのかアドバイスいただきたいです。
12
+
6
13
  ```html
7
14
  <body class="body1">
8
15
  <div class="calculator">

1

コード

2022/06/01 02:19

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,7 @@
1
1
  現在jsで作った電卓をjQueryに置き換えるのをやっているのですが、jQueryを習って間もないため全然わからず困っています。
2
2
  現在少しいじってみたのですが、てんでできませんでした。
3
+ jsの時は、現在記載しているHTMLのdivにそれぞれonclickcalc_func(this)をつけていました。
4
+
3
5
  下記のコードをJQueryバージョンにして、実装するにはどうすれば良いのでしょうか?
4
6
  ```html
5
7
  <body class="body1">
@@ -27,6 +29,113 @@
27
29
  </div>
28
30
  </div>
29
31
  </body>
32
+ ```
33
+ ```css
34
+ .calculator {
35
+ width: 205px;
36
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
37
+ margin: auto;
38
+ }
39
+
40
+ #display {
41
+ width: 205px;
42
+ background: #5b5b5b;
43
+ text-align: right;
44
+ border: 1px solid #000;
45
+ box-sizing: border-box;
46
+ color: #fff;
47
+ font-size: 25px;
48
+ padding: 5px 10px;
49
+ }
50
+
51
+ .display.flashing {
52
+ animation-name: flash;
53
+ animation-duration: 0.1s;
54
+ }
55
+
56
+ @keyframes flash {
57
+ 0% {
58
+ color: #5b5b5b;
59
+ }
60
+ 90% {
61
+ color: #5b5b5b;
62
+ }
63
+ 100% {
64
+ color: #fff;
65
+ }
66
+ }
67
+
68
+ .comm {
69
+ width: 204px;
70
+ background: #000;
71
+ display: flex;
72
+ flex-wrap: wrap;
73
+ padding-left: 1px;
74
+ }
75
+
76
+ .command {
77
+ width: 50px;
78
+ height: 45px;
79
+ background: #ddd;
80
+ margin: 0 1px 1px 0;
81
+ text-align: center;
82
+ padding-top: 10px;
83
+ box-sizing: border-box;
84
+ font-size: 18px;
85
+ }
86
+
87
+ .command.is-operator,
88
+ .command.is-equal {
89
+ background: orange;
90
+ color: #fff;
91
+ }
92
+
93
+ .command.is-2col {
94
+ width: 101px;
95
+ }
96
+
97
+ .command:active {
98
+ background: #bbb;
99
+ }
100
+
101
+ .command.is-operator:active,
102
+ .command.is-equal:active {
103
+ background: #d37e00;
104
+ }
105
+
106
+ .command.empty:active {
107
+ background: #ddd;
108
+ }
109
+
110
+ #debug {
111
+ display: none;
112
+ }
113
+
114
+ ```
115
+ ```javascript
116
+ function calc_func(button) {
117
+ var display = document.getElementById("display");
118
+ var button_value = button.innerHTML;
119
+ if (button_value === "clear") {
120
+ display.innerHTML = "0";
121
+ }else if (button_value === "=") {
122
+ var replace_value = display.innerHTML.replaceAll("×", "*").replaceAll("÷", "/");
123
+ display.innerHTML = (new Function ("return " + replace_value))();
124
+ }else if (display.innerHTML === "0" || display.innerHTML === "00") {
125
+ if (!isNaN(button_value) || button_value === "-") {
126
+ display.innerHTML = button_value;
127
+ }
128
+ }else {
129
+ if (isNaN(button_value)) {
130
+ var migihashi = display.innerHTML.slice(-1);
131
+ if (!isNaN(migihashi)) {
132
+ display.innerHTML += button_value;
133
+ }
134
+ }else {
135
+ display.innerHTML += button_value;
136
+ }
137
+ }
138
+ }
30
139
  ```
31
140
  ```jQuery
32
141
  $(document).ready(function(){