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

回答編集履歴

2

説明とコードの食い違いを修正、説明をより詳しくした

2021/09/20 17:10

投稿

itagagaki
itagagaki

スコア8402

answer CHANGED
@@ -2,21 +2,28 @@
2
2
  test.innerHTML = '<a href="#" onclick="BBB("AAA")">AAA</a>';
3
3
  ```
4
4
 
5
- `onclick=`に続いてダブルクオート`"`で括って指定した文字列の中身は`BBB(`ということになります。
5
+ HTMLコードで`onclick=`に続いてダブルクオート`"`で括って指定した文字列の中身は`BBB(`ということになります。
6
- でも指定したい文字列は`BBB("AAA")`ですよね。
6
+ でも指定したいは`BBB("AAA")`ですよね。これはつまりJavaScriptコードで`AAA`という中身の文字列を引数として`BBB`という関数を呼び出すということですよね。
7
- このようにダブルクオートを含む文字列はシングルクオート`'`で囲むといいです。
8
7
 
9
- つまり
8
+ ならばこのJavaScriptコードでは
10
9
 
10
+ ```JavaScript
11
+ BBB('AAA')
12
+ ```
13
+
14
+ と、ダブルクオートではなくシングルクオートを使うことで解決できます。
15
+ つまり`test.innerHTML`にセットするHTMLコードを
16
+
11
17
  ```HTML
12
- <a href="#" onclick='BBB("AAA")'>AAA</a>
18
+ <a href="#" onclick="BBB('AAA')">AAA</a>
13
19
  ```
14
20
 
15
- いうHTMLコードを`test.innerHTML`にセットればいいわけです。
21
+ とすわけです。
16
22
 
17
23
  しかし、このHTMLコードを`test.innerHTML`にセットするためにJavaScriptの文字列として表す必要があるわけですが、このHTMLコードはシングルクオートもダブルクオートも含んでいます。
18
24
 
19
- そこで、JavaScriptの文字列としてはシングルクオートで表すことにして、HTMLコード内のシングルクオートは`\`でエスケープして表しましょう。
25
+ そこで、これをJavaScriptの文字列として表すのにはシングルクオートを使うことにして、HTMLコード内のシングルクオートは`\`でエスケープして表しましょう。
26
+ (逆、つまり、文字列を表すのにダブルクオートを使って、中身のダブルクオートを`\`でエスケープするのでも可です)
20
27
 
21
28
  つまり、こういうことです。
22
29
 

1

表現をわかりやすくした

2021/09/20 17:10

投稿

itagagaki
itagagaki

スコア8402

answer CHANGED
@@ -3,8 +3,8 @@
3
3
  ```
4
4
 
5
5
  `onclick=`に続いてダブルクオート`"`で括って指定した文字列の中身は`BBB(`ということになります。
6
- 指定したい文字列は`BBB("AAA")`ですよね。
6
+ でも指定したい文字列は`BBB("AAA")`ですよね。
7
- ダブルクオートを含む文字列はシングルクオート`'`で囲むといいです。
7
+ このようにダブルクオートを含む文字列はシングルクオート`'`で囲むといいです。
8
8
 
9
9
  つまり
10
10
 
@@ -12,12 +12,14 @@
12
12
  <a href="#" onclick='BBB("AAA")'>AAA</a>
13
13
  ```
14
14
 
15
- しかし、これ文字列を`test.innerHTML = `に代入る右辺の文字列として表す必要があるわけですが、シングルクオートもダブルクオートも含んでいます
15
+ というHTMLコードを`test.innerHTML`にセットればいいわけです。
16
16
 
17
- こでシングルクオートは`\`でエスケプししょう
17
+ しかし、のHTMLコードを`test.innerHTML`にセットするためにJavaScriptの文字列として表す必要があるわけすが、このHTMLコードはシングルクオートもダブルクオトも含んでい
18
18
 
19
- と、こうなり
19
+ そこで、JavaScriptの文字列としてはシングルクオートで表にしてHTMLコード内のシングルクオートは`\`でエスケープして表ししょう
20
20
 
21
+ つまり、こういうことです。
22
+
21
23
  ```JavaScript
22
24
  test.innerHTML = '<a href="#" onclick="BBB(\'AAA\')">AAA</a>';
23
25
  ```