JavaScriptsでソースをインクルード

IT関連キャッチアップ画像

JavaScriptsを使って任意のソースをインクルードするやり方です。
各ページの共通部分を別ファイルにし、それをインクルードすることで同じソースを何度も書かなくて済みます。

(1)インクルードされる側のファイルを作る。

inc.js
  1. // HTMLが読み込み終わる最後に記述して呼び出し
  2. window.onload = function(){
  3.     // 関連記事を画面に表示
  4.     var strKanren_Kiji = '<div style="border:1px solid #ddd; padding: 20px;">' +
  5.     '<ul style="list-style-type: none;">' +
  6.     '<li>関連記事</li>' +
  7.     '<li><a href="/nail/">100均のネイルシールをオシャレにアレンジ</a></li>' +
  8.     '<li><a href="/nail/inknail.html">DLAWのアートインクを使ってインクネイル</a></li>' +
  9.     '</ul>' +
  10.     '</div>';
  11.     var tgtID = document.getElementById('kanren-kiji');    // 追加する場所取得
  12.     tgtID.innerHTML = strKanren_Kiji;                     // コードを追加
  13. }
  • 「window.onload」イベントで実行する関数にする。
  • 変数「strKanren_Kiji」に挿入するコードを格納してる。
  • 「+」はJavaScriptsで文字列結合の事
  • 「getElementById」でターゲットとなる「ID=kanren-kiji」のある場所を取得
  • 「innerHTML」で見つかった場所にコードを挿入する。

(2)呼び出し側の挿入箇所にコードを記述し、更に(1)を呼び出すコードを記述する。

index.html
  1. <!doctype html>
  2. <html lang="ja">
  3. <head>
  4.   ・・・
  5. </head>
  6. <body>
  7.   <main>
  8.     <div class="container">
  9.       <div class="row">
  10.         <!-- 左側 -->
  11.         <div class="col span-9">
  12.           <article class="news">
  13.             <section>
  14.               <div class="wata-rei">
  15.                 ご協力いただいたKYROOM_NAILさん、ありがとうございました。<br>
  16.                 <a href="https://www.kyroom.net/">KYROOM_NAIL</a>
  17.               </div>
  18.             </section>
  19.           </article>
  20.           <!-- 関連記事 -->
  21.           <div id="kanren-kiji"></div>
  22.         </div>
  23.         <!-- 右側 -->
  24.         <div class="col span-3">
  25.           ・・・
  26.         </div>
  27.       </div>
  28.     </div>
  29.   </main>
  30.   <!-- インクルード実行部(必ず最後に書く) -->
  31.   <script src="js/inc.js"></script>
  32. </body>
  33. </html>
  • 「<div id="kanren-kiji">〇〇〇</div>」が挿入箇所。結果「〇〇〇」にコードが挿入される。
  • 「<script src="js/inc.js"></script>」で実行関数を呼び出し。
  • すべてのソースが読み込み終わった後に実行となるよう、ソースの一番最後に書く。

これで「<div id="kanren-kiji"></div>」の所が「inc.js」に置き換わる。
「innerHTML」は完全に置き換わってしますが、既存ソースの前後などに追記したい場合は「insertAdjacentHTML」を使うと良い。

insertAdjacentHTML(position ,text)

例)insertAdjacentHTML(’beforeend’, ’<p>追加するHTMLソース</p>’)

[position]
beforebegin: 要素の直前に挿入
afterbegin: 要素の最初の子要素として挿入
beforeend: 要素の最後の子要素として挿入
afterend: 要素の直後に挿入