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

回答編集履歴

7

質問の変更に合わせて追記

2022/06/06 08:27

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -54,4 +54,21 @@
54
54
 
55
55
  [data-* - HTML: HyperText Markup Language | MDN](https://developer.mozilla.org/ja/docs/Web/HTML/Global_attributes/data-*)
56
56
 
57
- ---
57
+ ---
58
+
59
+ ### 質問の変更に合わせて追記
60
+
61
+ `display.html(replaceAll("×", "*").replaceAll("÷", "/"))`ですが、replaceAllは文字列のメソッドです。また、同名のメソッドがjQueryにもありますので、混同しているのでは?
62
+ [String.prototype.replaceAll() - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll)
63
+
64
+ ---
65
+
66
+ `display.text() += button_value`ですが、`text()`の戻り値は文字列なので、代入できません。代入式の左辺に来ることができるのは、変数などです。
67
+
68
+ > Returns: String
69
+ > [.text() | jQuery API Documentation](https://api.jquery.com/text/)
70
+
71
+ `text()`で中身のテキストを変更したい場合は、引数を渡して呼び出す必要があります。
72
+
73
+ > Set the content of each element in the set of matched elements to the specified text.
74
+ > [.text() | jQuery API Documentation](https://api.jquery.com/text/#text-text)

6

追記

2022/06/01 03:44

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -42,4 +42,16 @@
42
42
 
43
43
  ---
44
44
 
45
- `display += button_value;`ですが、`let`で宣言されており、その後の参照がなさそうなのでイベント処理が終わってそのまま捨てられてそうです。DOMに反映した方がいいのでは。
45
+ `display += button_value;`ですが、`let`で宣言されており、その後の参照がなさそうなのでイベント処理が終わってそのまま捨てられてそうです。DOMに反映した方がいいのでは。
46
+
47
+ ---
48
+
49
+ `let display = $('#display').val();`としたり`$('#display').html("0")`としたり、テキストノードと属性のどちらでデータを扱っているのか統一されていないように思います。
50
+
51
+ ---
52
+
53
+ `<div id="display" value="0">0</div>`ですが、`div`に`value`という属性は使えないので、data-*属性に変えるか、要素を変えるかした方がいいと思います。
54
+
55
+ [data-* - HTML: HyperText Markup Language | MDN](https://developer.mozilla.org/ja/docs/Web/HTML/Global_attributes/data-*)
56
+
57
+ ---

5

追記

2022/06/01 03:38

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -40,3 +40,6 @@
40
40
 
41
41
  `$('#display') += button_value`ですが、jQueryオブジェクトに文字列を加算代入してもいいことはなさそうです
42
42
 
43
+ ---
44
+
45
+ `display += button_value;`ですが、`let`で宣言されており、その後の参照がなさそうなのでイベント処理が終わってそのまま捨てられてそうです。DOMに反映した方がいいのでは。

4

追記

2022/06/01 03:32

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -34,4 +34,9 @@
34
34
  //let replace_value = $('#display').text($('÷', '/').replaceAll('×','*'));
35
35
  let replace_value = $('#display').text(); // ↑は←だとすると、
36
36
  ```
37
- となっていますので、`replace_value`は必ず`"="`となるため、`(function(){return =})()`と等価で文法エラーです。
37
+ となっていますので、`replace_value`は必ず`"="`となるため、`(function(){return =})()`と等価で文法エラーです。
38
+
39
+ ---
40
+
41
+ `$('#display') += button_value`ですが、jQueryオブジェクトに文字列を加算代入してもいいことはなさそうです
42
+

3

追記

2022/06/01 03:28

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -22,3 +22,16 @@
22
22
  `$('÷', '/').replaceAll('×', '*')`ですが、replaceAllメソッドは引数が一つです。
23
23
 
24
24
  [.replaceAll() | jQuery API Documentation](https://api.jquery.com/replaceAll/)
25
+
26
+ ---
27
+
28
+ `new Function("return " + replace_value)()`ですが、
29
+
30
+ ```js
31
+ $('#display').text(button_value);
32
+ //...
33
+ } else if (button_value === "=") {
34
+ //let replace_value = $('#display').text($('÷', '/').replaceAll('×','*'));
35
+ let replace_value = $('#display').text(); // ↑は←だとすると、
36
+ ```
37
+ となっていますので、`replace_value`は必ず`"="`となるため、`(function(){return =})()`と等価で文法エラーです。

2

追記

2022/06/01 03:20

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -15,4 +15,10 @@
15
15
  `$('÷', '/')`ですが、`$()`にはいくつかのパターンがありますが、文字列の引数を二つ受けるのはこの構文かと思います。
16
16
  `jQuery( selector [, context ] )`
17
17
  この場合、コンテキストのセレクタとして扱われますので、`/`が有効なセレクタではないということかと思います。
18
- コードの意図がわからないので何とも言えないですが、セレクタの構文に従うのがいいかと思います。
18
+ コードの意図がわからないので何とも言えないですが、セレクタの構文に従うのがいいかと思います。
19
+
20
+ ---
21
+
22
+ `$('÷', '/').replaceAll('×', '*')`ですが、replaceAllメソッドは引数が一つです。
23
+
24
+ [.replaceAll() | jQuery API Documentation](https://api.jquery.com/replaceAll/)

1

追記

2022/06/01 03:17

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37481

answer CHANGED
@@ -1,7 +1,18 @@
1
+ 見つけたものを追記していきます。
2
+
3
+ ---
4
+
1
5
  `.html`はメソッドです。意図がわからないので何とも言い難いですが、たぶん代入はしない方がいいでしょう。
2
6
 
3
7
  ```js
4
8
  $('#display').html = (new Function("return " + replace_value))();
5
9
  ```
6
10
 
7
- [.html() | jQuery API Documentation](https://api.jquery.com/html/#html)
11
+ [.html() | jQuery API Documentation](https://api.jquery.com/html/#html)
12
+
13
+ ---
14
+
15
+ `$('÷', '/')`ですが、`$()`にはいくつかのパターンがありますが、文字列の引数を二つ受けるのはこの構文かと思います。
16
+ `jQuery( selector [, context ] )`
17
+ この場合、コンテキストのセレクタとして扱われますので、`/`が有効なセレクタではないということかと思います。
18
+ コードの意図がわからないので何とも言えないですが、セレクタの構文に従うのがいいかと思います。