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

回答編集履歴

1

修正

2020/03/07 10:54

投稿

kairi003
kairi003

スコア1332

answer CHANGED
@@ -1,3 +1,17 @@
1
+ jQueryの要素生成は、innerHTMLよりもcreateElementに近いです。jQueryを使うのならば基本的にはjQueryで書くのが良いと思います。チェーンできるので。
2
+
3
+ createElementなどは「要素オブジェクトを生成→DOMに追加」というプロセスであるのに対して、innerHTMLは「対象要素の中身をHTMLテキストの文字列に変換→文字列を書き換え→文字列をDOMに変換→中身を全て新しいDOMで置き換え」となるため、とくにinnerHTMLが大きくなるほど無駄が多いです。最後に要素を追加するだけでもinnerHTML全体が再読み込みされるので。
4
+ またinnerHTMLを弄るとDOM構造を破壊してしまうことに対してなんの保険もありませんし、script要素はDOMに追加された瞬間に実行されるのでinnerHTMLで書き込むと実行されません。
5
+
6
+ 結局の所どれを使えば良いのかですが、jQueryなら$.appendで良いでしょう。ピュアJSならcreateElementか、insertAdjacentHTMLです。
7
+ ですがinsertAdjacentHTMLでHTMLを要素に変換して挿入した場合、その要素を変数に入れて弄るにはgetElementする必要があるので、すぐに利用したい場合はやはりcreateElementするのが良いでしょう。
8
+ ちなみにappendChildは子要素を戻り値にとるので次のようにも書けます。
9
+ ```javascript
10
+ var li = ul.appendChild(document.createElement('li'));
11
+ ```
12
+
13
+ ---
14
+ (修正前)
1
15
  まずそのコードだと動かないです。
2
16
  jqueryなどを使わない場合、基本的にDOMに要素を追加するには、createElementで要素を作ってappendChildする必要があります。とくにscript要素はこれ以外で追加しても実行されません。
3
17