回答編集履歴

1

追記

2024/11/15 10:20

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36898

test CHANGED
@@ -5,3 +5,12 @@
5
5
  let elementChildren = element.cloneNode(true).children;
6
6
  element.after(...elementChildren);
7
7
  ```
8
+
9
+ 簡単にご説明すると、`.children`は要素を返さないです。`HTMLCollection`という配列っぽいものを返します。
10
+ [Element: children プロパティ - Web API | MDN](https://developer.mozilla.org/ja/docs/Web/API/Element/children)
11
+
12
+ ところが、`.after()`の引数はノードを受取ります。
13
+ [Element: after() メソッド - Web API | MDN](https://developer.mozilla.org/ja/docs/Web/API/Element/after)
14
+ なので、要素の配列っぽいものをそのまま渡してもダメです。`...`で展開するなどして渡してください。
15
+
16
+ また、ノードや要素は一つの親しか持たないです。なので、`.after()`などで何かの要素の下に挿入すると、親が変わってしまいます。簡単に言うと、移動してしまいます。なので別のメソッドで事前にクローンをつくる必要があります。