Written by Kasumi

Failed to execute ‘insertBefore’ on ‘Node’ The node before which the new node is to be inserted is not a child of this node.の原因・対処方法

JavaScritptのinsertBeforeを使って、要素を移動したい。

Failed to execute ‘insertBefore’ on ‘Node’ The node before which the new node is to be inserted is not a child of this node.

コンソールに上記エラーが出て要素を移動出来ない為、エラーの原因と対処方法を知りたい。

本記事ではこのような悩みを解決します。

insertBeforeの使い方

おさらいとして、insertBeforeはある要素を移動したい場所の要素直前に持ってくる時に使います。

使い方は以下の通りです。

移動先親要素.insertBefore(移動したい要素, 移動先要素);

insertBeforeの使い方について詳しくはこちら
https://kasumiblog.org/javascript-dom-move/

エラーの原因

エラーを直訳すると以下の用になります。

‘Node’ で ‘insertBefore’ を実行できませんでした 新しいノードが挿入される前のノードは、このノードの子ではありません。

つまりinsertBeforeの第二引数に指定した移動先要素と移動先親要素が親子関係に無い事が原因でエラーが出ています。

対処方法

移動先親要素は直上の親要素であるか確認しましょう。

親子関係では無く、親孫関係だとエラーが出てしまいます。

HTMLで自動生成される親要素があるか確認

直上の親要素を指定したがエラーが出てしまう場合、自動で生成される親要素があるかブラウザの検証で確認しましょう。

例としてtable要素はtbodyなどが自動で生成されます。

まとめ

Failed to execute ‘insertBefore’ on ‘Node’ The node before which the new node is to be inserted is not a child of this node.の原因・対処方法について紹介しました。

以上で解説を終わります。

目次

関連記事

JavaScript

JavaScriptでDOM(HTML)・画像の読み込み完了時に任意の処理を実行する方法

2022.12.26
2533
JavaScript

【JavaScript】受け取ったデータが文字列 or 数値どちらなのか判定する方法【typeof演算子を使おう】

2022.11.29
1054
JavaScript

【簡単】JavaScriptを使って任意の文字列が配列内にあるか検索する方法【indexOfメソッド】

更新日:2022.09.09
491
JavaScript

【簡単】videoタグの再生速度を調整(早く・遅く)する方法

更新日:2022.09.09
4082