回答編集履歴

2

createDocumentFragment の説明文を追加

2017/04/26 12:09

投稿

think49
think49

スコア18164

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- `innerHTML` は上書きするので、innerHTML に代入する前に連結した文字列を入れる必要があります。
5
+ `innerHTML` は**上書き**するので、innerHTML に代入する前に連結した文字列を入れる必要があります。
6
6
 
7
7
 
8
8
 
@@ -30,7 +30,9 @@
30
30
 
31
31
 
32
32
 
33
- 挿入するなら `insertAdjacentHTML` を使います。
33
+ HTMLを**挿入**するなら `insertAdjacentHTML` を使います。
34
+
35
+ (※`innerHTML` を `+=` で上書き追加すると、既存のDOM参照は失われるので、お勧めはしません。)
34
36
 
35
37
 
36
38
 
@@ -54,11 +56,13 @@
54
56
 
55
57
 
56
58
 
57
- `innerHTML` を `+=` で上書き追加すると、既存のDOM参照は失われるので、お勧めはしません。
59
+ ### createDocumentFragment()
58
60
 
59
61
 
60
62
 
61
- ### createDocumentFragment()
63
+ **ノード**を挿入するなら、`createDocumentFragment` を使います。
64
+
65
+ 今までの方法はHTMLタグを挿入or上書きするものでしたが、ノードで扱う事で特殊文字(`<>&"'`)のエスケープミスによる不具合(XSS)から解放されます。
62
66
 
63
67
 
64
68
 

1

innerHTML のコード修正

2017/04/26 12:09

投稿

think49
think49

スコア18164

test CHANGED
@@ -16,11 +16,9 @@
16
16
 
17
17
  for (var i = 0; i < 5; i++) {
18
18
 
19
- result = i;
19
+ result.push(i);
20
20
 
21
21
  }
22
-
23
-
24
22
 
25
23
  document.getElementById('render').innerHTML = result.join('<br>');
26
24