💭

remove() と innerHTML = '' の違い

に公開

状況

エリア内のHTMLを空にしようと思い、remove()を使ったところ、画面上に表示されるべきものが表示されなくなった

結論

両方とも消すという点では似た挙動であるが、実際は違う動きをしている。

element.remove(): 指定したHTML要素(例えば指定したidのdiv全体)を、DOMツリーから完全に削除する。一度削除されると、その要素は全く存在しなかったことになるため、remove後にその要素を操作しようとしてもエラーになったり、期待通りに動作しなくなる。ないものを動かそうとしているので当然の挙動。

element.innerHTML = '': 指定したHTML要素の 「中身」だけを空にする。 要素自体(例えば指定したidのdiv自体)はDOMツリーに残り続けるため、その後もその要素に新しいコンテンツを追加したり、スタイルを変更したりといった操作が可能。箱だけ残ってるので中身を詰め直したり、変えたりできる。

Discussion