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

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

詳細はこちら
HTML5

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

JavaScript

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1200閲覧

jQueryが動きません。

Googler

総合スコア6

HTML5

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

JavaScript

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/03/12 08:00

今作っているサイトの文字をスクロールに合わせてふわっと表示させるために、このページ(https://liginc.co.jp/500530)を参考にしながらコードを書いています。

しかし、全くjQueryの機能が動いておりません。

HTML

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>凛太郎応援ページ</title> 7 <link rel="stylesheet" href="style.css"> 8 <script src="https://unpkg.com/scrollreveal"></script> 9 <script src="js/jquery-3.6.0.min.js"></script> 10 <script src="js/script.js"></script> 11 12 13 14 </head> 15 <body> 16 17 18 19 <header> 20 <div class="container"> 21 22 <div class="title">***応援サイト <div class="music"><audio controls src="img/music.wav"></audio></div> 23 24 25 </div> 26 </header> 27 28 <div class="top-img"> 29 <div class="container"> 30 <div class="fade"> 31 <h1> ****を</h1> 32 <h1> ***未来に変えてみませんか?</h1> 33 </div> 34 </div> 35 </div> 36 37 38 <div class="explain"> 39 <p>****<span style="font-size:30px"><b>***。</span></b></p> 40 <p>*******、<b><span style="font-size:30px">****</span></b>**********</p> 41 <p>************<b><span style="font-size:30px">*********</span></b></p> 42 <p>********<b><span style="font-size:30px">*********</span></b></p> 43 <p></span>********<b><span style="font-size:30px">**********</span></b></p> 44 <p>*********</p> 45 <p>*********<b><span style="font-size:30px">*******</span></b>***********</p> 46 47 </div>

jQuery

1ScrollReveal().reveal('.explain', { 2 duration: 10000, // アニメーションの完了にかかる時間 3 viewFactor: 0.2, // 0~1,どれくらい見えたら実行するか 4 reset: true // 何回もアニメーション表示するか 5}); 6 7$(".explain").click(function(){ 8 9 $(this).css('color' , 'red'); 10 11});

ちなみに、ファイル構造は以下の通りです。

webページファイル
index.html, style.css, jsファイル, img

jsファイルの中
script.js,jquery-3.6.0.min.js

一応jQueryもhttps://jquery.com/のサイトからダウンロードしましたが、

jQuery

1$(".explain").click(function(){ 2 3 $(this).css('color' , 'red'); 4 5});

の部分も反映されていません。

何がダメなのでしょうか?

よろしくお願いします。

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

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

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

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

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

guest

回答2

0

$(".explain").clickのタイミングで、まだ.explainが読み込まれていないからじゃないでしょうか。

JavaScriptを書く場所や読み込む場所はどこがいいのか?

headタグ内にJavaScriptを記述するとまだbodyタグ内の処理が行われていないので、Elementオブジェクトが処理できずにエラーとなる

画面が読み込まれたときに処理を実行するように記述すれば、head内にscriptを記述してもDOMのレンダリング後にその処理は実行できます。

解決策としては、body内への処理(今回だとscript.js)をbodyの最後で読み込む、または「html読み込み後に処理」という記述をする、です。

m.ts10806さんが書いた通り、この中に書くとhtml読み込み後に処理してくれるので、<head>内で読み込んでいてもちゃんと動きます。

jQuery

1$(function(){ 2 3 4})

投稿2021/03/12 08:53

編集2021/03/12 10:02
mai1210

総合スコア272

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

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

0

ベストアンサー

headに入れてるということはbodyの読み込み待たずに動くので、イベント付与したくてもできない状態です。

</body>の前に一式移動させるか、Document.readyなど、ドキュメントの読み込みを待ってから実行するようにしてみてください。 jQueryなら例えばこれの中に要素の操作、参照のコードをいれる ```js $(function(){

})

投稿2021/03/12 08:09

編集2021/03/12 08:10
m.ts10806

総合スコア80875

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

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

Googler

2021/03/12 08:15

私はこちらの書籍(https://www.amazon.co.jp/jQuery%E6%A8%99%E6%BA%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E8%AC%9B%E5%BA%A7-%E7%A5%9E%E7%94%B0%E5%B9%B8%E6%81%B5-ebook/dp/B0192PG8TU/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=jQuery&qid=1615536827&sr=8-2)でjQueryを学んでいますが、headの中に入っているのに動いているように見えます。この本の中で出てくるコードです。 <!doctype html> <html> <head> <meta charset="UTF-8"> <title>Lesson03</title> <link rel="stylesheet" href="css/reset.css"> <link rel="stylesheet" href="css/style.css"> <script src="js/jquery-2.1.4.min.js"></script> <script src="js/script.js"></script> </head> <body> <button>jQuery</button> </body> </html> 私のと何が異なるのでしょうか?
m.ts10806

2021/03/12 08:22

理由は書いたとおりです。 jQueryでも純JavaScriptでも、操作したい要素が読み込まれないタイミングで要素を取得しようとしてもnullです。
Googler

2021/03/12 08:46

私が貼った書籍のサンプルコードはheadの中に<script src="js/jquery-2.1.4.min.js"></script> <script src="js/script.js"></script>が書かれている、つまり操作したい要素が読み込まれないタイミングで要素を取得しようとしているように見えますが、それでもjQueryは動いています。これは何故ですか?ちなみにscript.jsファイルの中は$(function(){ $("button").click(function(){ // $(this) $(this).html("Click").css("background", "#000033"); }); }); となっております。
m.ts10806

2021/03/12 08:49

回答に書いたとおり $(function(){ }) が、「html読み込み後」を示すイベントだからです。
m.ts10806

2021/03/12 08:53

回答伝わりにくかったかもしれませんが、問題は「headに書いてること」ではなく「対象の要素が読み込まる前に参照しようとしていること」なのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問