javascript insertBeforeでノードを追加する

javascript insertBeforeでノードを追加する

javascriptで、insertBeforeを使用して、ノードを追加するサンプルコードを掲載してます。ブラウザはchromeを使用しています。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 103.0.5060.134

insertBefore使い方

insertBeforeを使用すると、ノードを追加することが可能です。

親要素.insertBefore(追加する要素, 追加したい場所)

insertBefore使い方

<div id="main">
  <p id="one">one</p>
  <p id="two">two</p>
</div>

<script>

'use strict';

// 追加する要素
const zero = document.createElement('p');
zero.id = "zero";
zero.innerHTML = "zero";

// 親要素
const elm = document.getElementById("main");

// 追加する場所
const one = document.getElementById("one");

// 追加する前の位置に追加される
elm.insertBefore(zero,one);

</script>

実行結果をみると、指定したノード(id=one)の前に要素が追加されて表示されていることが確認できます。

insertBeforeの第2引数をnullに指定すると、最後尾にノードが追加されます。

// 最後尾に追加される
elm.insertBefore(zero,null);

ノードを最後に追加するには「appendChild」を使用する方法もあります。

また、以下のコードを、

// 親要素
const elm = document.getElementById("main");
// 追加する場所
const one = document.getElementById("one");

// 追加する前に追加される
elm.insertBefore(zero,one);

document.getElementByIdの省略して、簡潔に記述することもできます。

main.insertBefore(zero,one);

サンプルコード

以下は、
「ノードを追加」ボタンをクリックして、ノードを追加するだけの
サンプルコードとなります。

※cssには「tailwind」を使用して、アロー関数で関数は定義してます。

<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <title>mebeeサンプル</title>
  <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet">
</head>

<script>

  const hoge = () => {

    const elm = document.createElement('span');

    elm.className = "block rounded-md text-white font-extrabold text-center bg-purple-500 p-6";

    elm.innerHTML = "追加された要素";

    // 最後尾に追加される
    main.insertBefore(elm, null);

  }

  window.onload = () => {

    add.onclick = () => { hoge() };

  }

</script>

<body>
  <div class="container mx-auto my-56 w-64 px-4">

    <div id="sample" class="flex flex-col justify-center">

      <button id="add"
        class="bg-gradient-to-r from-green-400 to-blue-500 hover:from-pink-500 hover:to-yellow-500 text-white py-2 px-4 rounded-full mb-3 mt-4">
        ノードを追加
      </button>

      <div id="main" class="space-y-4">
      </div>

    </div>
  </div>
</body>

</html>

ノードが追加されていることが確認できます。