9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【JavaScript】appendChildとinsertBeforeの違い

Last updated at Posted at 2020-10-08

この記事では、生成したHTMLの要素をブラウザに表示させるためのメソッド
appendChildとinsertBeforeの違いについて解説します。

##この記事でわかること

  • appendChildとinsertBeforeの違い
  • appendChildの使い方
  • insertBeforeの使い方

##appendChildとinsertBeforeの違い
①appendChildと②insertBeforeは、どちらも
生成したHTML要素をブラウザに表示させるためのメソッドです。
さらに、特定の親要素の中に子要素を追加してくれます。
違いはずばり、追加される場所です!

#####①appendChild

追加される場所は、親要素の末尾です。
つまり指定した要素の閉じタグの直前ですね。

#####②insertBefore
追加される場所は、第2引数で指定した要素の前です。
なので、必ず第2引数を指定してあげる必要がありますよ〜〜

####親要素parentの中に、子要素childを追加する方法で解説します!

<div class='parent'>
  <div class='child'></div><!--既存の要素-->
  <div class='child'></div><!--既存の要素-->
</div>

#appendChildの使い方
書き方:親要素.appendChild(子要素)

既存の<div class='parent'></div>に、<div class='child'></div>を子要素として追加したい場合

//親となるdiv要素をとってくる
const parent = document.getElementByClassName('parent');

//追加する要素の作成
const child = document.createElement('div');
child.setAttribute('class', "child");

// 生成したHTMLの要素をブラウザに表示させる
parent.appendChild(child);

これが実行されると、以下のように要素が追加されます。

<div class='parent'>
  <div class='child'></div><!--既存の要素-->
  <div class='child'></div><!--既存の要素-->
  <div class='child'></div><!--追加された要素-->
</div>

#insertBeforeの使い方
書き方:親要素.insertBefore(追加する要素, どこに追加するのか)

//親となるdiv要素をとってくる
const parent = document.getElementByClassName('parent');

//追加する要素の作成
const child = document.createElement('div');
child.setAttribute('class', "child");

// 生成したHTMLの要素をブラウザに表示させる
parent.insertBefore(child, parent.firstElementChild);

これが実行されると、以下のように要素が追加されます。

<div class='parent'>
  <div class='child'></div><!--追加された要素-->
  <div class='child'></div><!--既存の要素-->
  <div class='child'></div><!--既存の要素-->
</div>

これで、親要素の中の最初の位置に持ってくることができました。

生成したHTMLの要素をブラウザに表示させる記述ですが、childの前に入れてあげたらいいじゃない?と思う方もいらっしゃるかもしれません。でもこの場合、childがたくさんあるのでどのchildか判断できないんですよね。
なので、parent.firstElementChildと記述してあげることで、親要素の中身の一番最初に表示させることができます。
firstElementChildは、JavaScriptのElementオブジェクトの最初の子要素を取得するプロパティです。

###おわりに
appendChildとinsertBeforeの違いはわかりましたか?
もしわからないことや間違いなどがあれば、コメントでお知らせください🙇‍♀️

9
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?