質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

解決済

jsからhtmlにscriptタグを書き込む方法でremodalとdatatablesを読み込みたいが、うまくいかない

rsrsrs
rsrsrs

総合スコア1

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

2回答

1リアクション

2クリップ

350閲覧

投稿2022/10/06 09:28

編集2022/10/06 09:45

前提、実現したいこと

htmlのhead内で自分の使いたいremodalとdatatableというライブラリを読み込んでいたところから、js/script.js内でこれら2つを読み込むようにしたいのですが、そうすると下記のようにエラーが出ます。ライブラリが読めなくなったのだと思います。

$(...).DataTable is not a function

具体的にはこの正常に動くHTML、JSを…

html

<head> <link rel="stylesheet" href="css/remodal.css" /> <link rel="stylesheet" href="css/remodal-default-theme.css" /> <script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script> <script src="./js/remodal.js"></script> <script src="./js/datatables.min.js"></script> <script src="./js/script.js"></script> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Document</title> </head> <body> <a id="remodalOn" href="#modal">Call the modal with data-remodal-id="modal"</a> <div class="remodal" data-remodal-id="modal"> <button data-remodal-action="close" class="remodal-close"></button> <h1>Remodal</h1> <table id="example" class="display" style="width:100%"> <thead> <tr> <th>Name</th> <th>Position</th> <th>Office</th> <th>Age</th> <th>Start date</th> <th>Salary</th> </tr> </thead> <tbody> <tr> <td>Herrod Chandler</td> <td>Sales Assistant</td> <td>San Francisco</td> <td>59</td> <td>2012-08-06</td> <td>$137,500</td> </tr> <tr> <td>Rhona Davidson</td> <td>Integration Specialist</td> <td>Tokyo</td> <td>55</td> <td>2010-10-14</td> <td>$327,900</td> </tr> </tbody> <tfoot> <tr> <th>Name</th> <th>Position</th> <th>Office</th> <th>Age</th> <th>Start date</th> <th>Salary</th> </tr> </tfoot> </table> </div> </body>

javascript

$(document).ready(function () { $('#example').DataTable(); });

イメージ説明

下記のように変更します。
headタグ内のremodal,datatableのscriptタグは取り払いました。
このおかげで、HTML内の<script src="./js/script.js"></script>の下の行に

<script src="./js/remodal.js"></script>と <script src="./js/datatables.min.js"></script>を追加できます。

コンソールを見てもしっかりheadタグ内にscriptタグが追加されていますが、何故dataTableが使えないのか分かりません。

javascript

$(function(){ var scripts = ["js/datatables.min.js", "js/remodal.js"]; for (let index = 0; index < scripts.length; ++index) { var script = document.createElement("script"); script.src = scripts[index]; // htmlの<script src="./js/script.js"></script>より前にscriptタグを書き込む document.querySelector("head > script:nth-child(4)").after(script, document.querySelector('head > script:nth-child(4)')) } }); $(document).ready(function () { $('#example').DataTable(); });

イメージ説明

試したこと

script.jsで、配列の中をremodal.jsのみにすると、エラーなく動いてくれます。
datatableは動かせませんがモーダルは出せます。
どうすれば良いのでしょう?

補足情報(FW/ツールのバージョンなど)

datatablesの入手元:
https://datatables.net/download/

Cocode👏を押しています

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。