回答編集履歴
2
説明とコードの食い違いを修正、説明をより詳しくした
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
|
-
でも指定したい
|
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=
|
18
|
+
<a href="#" onclick="BBB('AAA')">AAA</a>
|
13
19
|
```
|
14
20
|
|
15
|
-
と
|
21
|
+
とするわけです。
|
16
22
|
|
17
23
|
しかし、このHTMLコードを`test.innerHTML`にセットするためにJavaScriptの文字列として表す必要があるわけですが、このHTMLコードはシングルクオートもダブルクオートも含んでいます。
|
18
24
|
|
19
|
-
そこで、JavaScriptの文字列としてはシングルクオート
|
25
|
+
そこで、これをJavaScriptの文字列として表すのにはシングルクオートを使うことにして、HTMLコード内のシングルクオートは`\`でエスケープして表しましょう。
|
26
|
+
(逆、つまり、文字列を表すのにダブルクオートを使って、中身のダブルクオートを`\`でエスケープするのでも可です)
|
20
27
|
|
21
28
|
つまり、こういうことです。
|
22
29
|
|
1
表現をわかりやすくした
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
|
-
|
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
|
```
|