🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
jQuery

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

Q&A

解決済

2回答

1356閲覧

main.jsにて、jQueryが使えなかった理由が分からないです。(script srcの先頭がmain.jsだと動かなかった)

sagat

総合スコア10

jQuery

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

0グッド

0クリップ

投稿2021/02/13 03:37

編集2021/02/13 06:49

html

1コード<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 7 <title></title> 8 9 <link rel="stylesheet" href="style.css"> 10</head> 11<body> 12 13 14 <section> 15 16 <div class="sidebar"> 17 <h2>サポートページ</h2> 18 <div class="submenu"> 19 <h3>1.初めて使うとき</h3> 20 <ul class="hidden"> 21 <li><a href="#">-概要</a></li> 22 <li><a href="#">-インストールする</a></li> 23 <li><a href="#">-アカウントを登録する</a></li> 24 <li><a href="#">-アンインストールする</a></li> 25 </ul> 26 </div> 27 <div class="submenu"> 28 <h3>2.基本的な使い方</h3> 29 <ul class="hidden"> 30 <li><a href="#">-基本的な操作方法</a></li> 31 <li><a href="#">-元の状態に復元する</a></li> 32 <li><a href="#">-機能拡張プラグインを追加する</a></li> 33 </ul> 34 </div> 35 </div> 36 </section> 37 <script src="jquery-3.4.1.min.js" ></script><!-- script srcがmain.jsの方が先だと動かなかった --> 38 <script src="main.js" ></script> 39 40 41 42</body> 43</html>

css

1コード.hidden { 2 display:none; 3} 4.submenu ul { 5 margin-left:1em; 6 list-style:none; 7 font-size:14px; 8} 9.submenu h3 { 10 cursor:pointer; 11 color:#5e78c1; 12 margin-left:1em; 13} 14.submenu h3:hover { 15 color:#b04188; 16 text-decoration:underline; 17} 18

js

1コード'use strict'; 2 3{ 4 $(document).ready(function() { 5 $('.submenu h3').on('click', function() { 6 $(this).next().toggleClass('hidden'); 7 }); 8 }); 9} 10// main.js
<script src ="main.js"> <script src="jquery-3.4.1.min.js"> とすると動きませんでした。この2つのscriptタグをoption矢印ボタンで逆にすると問題なく動きました。 原因が分かりません。教えて下さい

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

jqueryが読み込まれませんでした。

「jqueryが読み込まれませんでした」じゃなくて、「main.jsの中でjQueryが使えませんでした」の間違いでは?
読み込む前には使えません。

投稿2021/02/13 03:47

otn

総合スコア85886

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sagat

2021/02/13 06:55

回答ありがとうございます! その通りでございます。main.jsの中でjQueryが使えませんでした。修正いたしました。
otn

2021/02/13 06:59

main.jsを読み込んで、その(関数定義の外の)コードを実行して、それからjqueryを読み込みます。 読み込む前には使えません。
sagat

2021/02/13 07:27 編集

ですが、htmlのscriptタグにmain.jsを読み込んでからjQueryを読み込んだ結果は動かなかったといいますか、使えなかったんです。逆に記述すると動きました。どういうことかよく分かりません..色々混乱してきました。
otn

2021/02/13 08:40

回答をよく読みましょう。 jQueryを読み込む前にjQueryは使えません。この当たり前のことが理解できないとすると、 どこまで遡って説明すれば良いのか分かりません。
sagat

2021/02/13 09:22

ありがとうございます!申し訳ないです。 私はscriptタグにjQuery(jquery-3.4.1.min.js)を入れとけば読み込まれて、動くものだと思っておりました。 JQuery(jquery-3.4.1.min.js)をまず定義した後でないと、main.jsにて動かない事が原因でした。つまりmain.jsから読み込むと動かないそうです。しっかり読み解けなくて、改めて申し訳ないです。
otn

2021/02/13 09:24

> main.jsを読み込んで、その(関数定義の外の)コードを実行して、それからjqueryを読み込みます。 という回答の意味がわからなかったということですね。 意味がわからないときは質問しましょう。
guest

0

ベストアンサー

jquery-3.4.1.min.jsの中で$()が定義されているから。

エラー

js

1a(); 2const a = function(){console.log("a")} 3//ReferenceError

実行される

js

1const a = function(){console.log("a")} 2a();

投稿2021/02/13 04:05

編集2021/02/13 04:10
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sagat

2021/02/13 06:58

回答ありがとうございます!ファイル名がmain.jsである事を記述しておりませんでした。申し訳ないです!
m.ts10806

2021/02/13 07:03 編集

その「記述していなかった内容」とこの回答は関連性はないです。 関連性というか影響。
m.ts10806

2021/02/13 07:04

私の回答は「原因」に対する回答です。 納得できなかったということでしょうか? 回答をどう理解したのか教えてください。
sagat

2021/02/13 07:17

jquery-3.4.1.min.jsのファイル中で$()を記述しているからと解釈しました。ファイル名はmain.jsなので補足に入れました。誤解していたようです..
m.ts10806

2021/02/13 07:25

なるほど、伝わってないですね。 「記述しているから」ではないです。 「定義されているから」 定義されてない段階で使おうとしているから使えない(エラーとなる)です。 物凄く簡易なサンプルコードも提示したのですが、そこまで読まれてないのでしょうか。 jquery-3.4.1.min.jsのコード内を読んでみることも重要です。minifyだと読みづらいので、そこはjquery-3.4.1.jsを取得してきて読むと良いでしょう。 ところで、まだ何か疑問があるのですか?
sagat

2021/02/13 08:01 編集

ありがとうございます。サンプルコードは読みました。定義していなかったからjQueryが使えなかった動かなかったという意味と現在解釈してます。 htmlにてscriptタグにmain.js jquery-3.4.1.min.jsの順で読み込むと実際動きませんでした。ということはこの順では定義されなかったということになります。この2つのscriptタグが逆だと使える状態にななったということは、定義がなされたという事なのでしょうか? ごめんなさい混乱しております
m.ts10806

2021/02/13 08:01

自身で質問に書かれていますね。 >逆にすると問題なく動きました。 外部ファイルと言っても、読み込みの記述をした場所にコードが入るのとイコールです。
sagat

2021/02/13 08:38 編集

ありがとうございます。理解しました!jquery-3.4.1.min.jsを先に読み込んでいなかったということはまだ定義されていない状態。最初にmain.js次に定義(jquery-3.4.1.min.js)では、動きませんという事ですね!
m.ts10806

2021/02/13 09:59 編集

はい。ただ、結局otnさんの回答の通りです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問