指定した要素(エレメント)の前 または 後にinsertAdjacentHTMLを利用してHTMLを挿入する - JavaScript

JavaScriptで指定した要素(エレメント)の前 または 後にHTMLを挿入するコードを紹介します。

概要

指定した要素の前後にHTMLを挿入するには、insertAdjacentHTML メソッドを利用すると実現できます。この記事では、insertAdjacentHTML を利用したコードを紹介します。
insertAdjacentHTML メソッドの詳細はこちらの記事を参照してください。

プログラム:指定した要素の後に挿入する場合

コード

下記のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <style>
    <!--
    .InnerFrame {
      margin-top:2px;
      border: solid 1px #0094ff;
    }
    -->
  </style>
  <script type="text/javascript">
    function buttonClick(e) {
      var elem = document.getElementById('InnerFrame04');
      htmlstr = '<div id="InnerFrame06" class="InnerFrame">要素06</div>';
      elem.insertAdjacentHTML('afterend', htmlstr);
    }
  </script>
</head>
<body>
  <div id="OuterFrame">
    <div id="InnerFrame01" class="InnerFrame">要素01</div>
    <div id="InnerFrame02" class="InnerFrame">要素02</div>
    <div id="InnerFrame03" class="InnerFrame">要素03</div>
    <div id="InnerFrame04" class="InnerFrame">要素04</div>
    <div id="InnerFrame05" class="InnerFrame">要素05</div>
  </div>

  <hr />
  <input id="Button1" type="button" value="Insert" onclick="buttonClick();" />
</body>
</html>

解説

inputタグは下記の記述になっており、ボタンをクリックすると、butonClick()関数を実行する動作になっています。
<input id="Button1" type="button" value="Insert" onclick="buttonClick();" />

ボタンのクリックにより、下記のbuttonClick() 関数が実行されます。最初にgetElementById() メソッドにより、'InnerFrame04' のIDのdiv要素が取得され、elem変数に代入されます。elem要素のinsertAdjacentHTML()を呼び出し、elem要素の前後にHTMLを挿入します。
今回のコードでは、insertAdjacentHTML() メソッドの第一引数に afterend を与えているため、elemの要素の後ろに第二引数で与えたHTMLの文字列が挿入されます。
elem要素は、'InnerFrame04' のIDのdiv要素が代入されているため、[要素04]の直後に[要素06]のdiv枠が挿入される動作になります。
function buttonClick(e) {
  var elem = document.getElementById('InnerFrame04');
  htmlstr = '<div id="InnerFrame06" class="InnerFrame">要素06</div>';
  elem.insertAdjacentHTML('afterend', htmlstr);
}

実行結果

上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。


[Insert]ボタンをクリックします。[要素04]の直後に[要素06]のdiv枠が追加されたことが確認できます。

プログラム:指定した要素の前に挿入する場合

コード

指定した要素の直前に挿入する場合は、先のbuttonClick() 関数のコードを下記に修正します。
function buttonClick(e) {
  var elem = document.getElementById('InnerFrame04');
  htmlstr = '<div id="InnerFrame06" class="InnerFrame">要素06</div>';
  elem.insertAdjacentHTML('beforebegin', htmlstr);
}

解説

ボタンのクリックにより、buttonClick() 関数が実行されます。getElementById() メソッドにより、'InnerFrame04' のIDのdiv要素が取得され、elem変数に代入されます。elem要素のinsertAdjacentHTML()を呼び出し、elem要素の前後にHTMLを挿入します。
今回のコードでは、insertAdjacentHTML() メソッドの第一引数に beforebegin を与えているため、elemの要素の手前に第二引数で与えたHTMLの文字列が挿入されます。
elem要素は、'InnerFrame04' のIDのdiv要素が代入されているため、[要素04]の直前に[要素06]のdiv枠が挿入される動作になります。

実行結果

上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。


[Insert]ボタンをクリックします。[要素04]の直前に[要素06]のdiv枠が追加されたことが確認できます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-04-15
作成日: 2019-03-04
iPentec all rights reserverd.