JavaScript
PR

【JavaScript 3-2】よくあるつまずき|JavaScriptが動かない時の見直し方(初心者向け)

JS3-2.webp
toshi
記事内に商品プロモーションを含む場合があります

※この記事は JavaScript 3-2「よくあるつまずき」です。
ここでは、新しい文法を増やすより、
JavaScriptが動かない時にどこを見るかを整理します。
最初はエラーを完璧に読めなくても大丈夫です。まずは確認する順番を持つことが大事です。

JavaScriptを学び始めると、
コード自体は短いのに、

**なぜか動かない**

という場面がよく出てきます。

たとえば、

– ボタンを押しても反応しない
– 文字が変わらない
– console.log が出ない
– classList.toggle が効かない
– 画面はあるのに JavaScript だけ動いていない

こういう時に大事なのは、
いきなり全部を疑うことではありません。

まずは、
**見る順番**
を決めておくことです。

今回は、
JavaScriptが動かない時に確認したいポイントを、
初心者向けに整理していきます。

Q
「JavaScriptが動かない時は“読み込み → id → コンソール”の順で見ます」

最初はこの順番で見れば大丈夫です。

1. script.js は読み込まれているか
2. HTML側の id と JavaScript側の名前は合っているか
3. console.log は出ているか
4. コンソールにエラーは出ていないか
5. クリック処理の中に書くべき処理が入っているか

JavaScriptが動かない時は、
コード全体を一気に直そうとすると混乱しやすいです。

まずは、
「そもそも読み込まれているか」
「対象を見つけられているか」
「クリック処理まで届いているか」
を順番に確認します。

最初に疑う場所を決める

JavaScriptが動かない時の確認順

確認すること見る場所
JavaScriptが読み込まれているかscriptタグ / console.log
id名が合っているかHTMLのid / getElementById
ボタンが取得できているかbuttonのid
クリック処理が動いているかaddEventListener の中
表示を書き換えているかtextContent / classList

JavaScriptが動かない時は、
原因が1つとは限りません。

ただ、初心者のうちは、
だいたい次のどこかで止まりやすいです。

– script.js が読み込まれていない
– id名がずれている
– ファイル名やフォルダ名が違う
– クリック処理の中に書けていない
– コンソールにエラーが出ている

まずはこの順番で見ていきます。

読み込まれているかを先に見る

script.js が読み込まれているか確認する

JavaScriptがまったく動かない時は、
まず script.js が読み込まれているかを確認します。

今回のような構成の場合、

javascript-03-02-example/

├─ index.html

├─ css/

│  └─ style.css

└─ js/

  └─ script.js
TeX

index.html から見た JavaScript の読み込みは、次の形です。

<script src="js/script.js"></script>
HTML

jsフォルダの中に script.js があるなら、src は “js/script.js” です。
フォルダ名やファイル名が違うと、
JavaScriptは読み込まれません。

最初の確認用メモを出す

console.log で読み込み確認をする

script.js が読み込まれているかを見る時は、
まず script.js の最初に console.log を書くと確認しやすいです。

console.log("script.js が読み込まれました。");
JavaScript

これが開発者ツールのコンソールに表示されれば、
少なくとも script.js は読み込まれている可能性が高いです。

console.log は、ページ本文には表示されません。

ブラウザで右クリックして「検証」を開き、
「Console」または「コンソール」タブで確認します。

toshi
toshi

画面に出ないから失敗、ではありません。
console.log はコンソールに出る確認用メモです。

HTMLとJavaScriptの名前をそろえる

id名のずれを確認する

JavaScriptがHTMLの要素を見つける時は、
id名がとても大事です。

HTML側が、

<p id="message" class="message">
	ここに表示される文字が変わります。
</p>
HTML

なら、JavaScript側も、

const message = document.getElementById("message");
JavaScript

のように、同じ名前にします。

HTML側JavaScript側結果
id=”message” getElementById(“message”)合っている
id=”message” getElementById(“messege”)ずれている
id=”changeButton”getElementById(“changeButton”)合っている
id=”changeButton”getElementById(“button”)ずれている

id名は、1文字違うだけでも見つけられません。
最初はHTML側のidをコピーして、
JavaScript側に貼るのが安全です。

大文字と小文字も別ものとして見る

変数名とid名の書き間違いに注意する

JavaScriptでは、
大文字と小文字が区別されます。

たとえば、

const changeButton = document.getElementById("changeButton");
JavaScript

と書いた場合、
あとで使う時も、

changeButton.addEventListener("click", function() {
  console.log("クリックされました。");
});
JavaScript

のように同じ名前を使います。

`changeButton` と `changebutton` は別ものです。

書き方同じ?
changeButton正しい名前
changebuttonBが小文字なので別名
ChangeButton先頭が大文字なので別名
changeButtonコピーして使えば安全

クリック処理まで届いているか見る

addEventListener の中に
console.log を入れる

ボタンを押しても反応しない時は、
クリック処理の中に console.log を入れてみます。

changeButton.addEventListener("click", function() {
  console.log("ボタンが押されました。");
});
JavaScript

これでボタンを押した時にコンソールへ表示されれば、
クリック処理までは動いています。

表示されない場合は、

– ボタンのid名が違う
– script.jsが読み込まれていない
– addEventListenerを書く対象が違う

あたりを見直します。

処理を書く位置を確認する

クリックで動かしたい処理は中に入れる

ボタンを押した時に動かしたい処理は、
addEventListener の中に書きます。

changeButton.addEventListener("click", function() {
  message.textContent = "ボタンが押されました。";
});
JavaScript

一方で、クリックと関係なくページを開いた時に動く処理は、
外に書かれていても動きます。

書く場所動くタイミング
addEventListener の外ページを読み込んだ時
addEventListener の中ボタンを押した時
関数の中関数を呼び出した時
toshi
toshi

「押した時に変わってほしい」のに外に書いている、
というのはよくあるつまずきです。

エラー文を怖がらずに見る

コンソールの赤いエラーを確認する

JavaScriptに問題があると、
コンソールに赤いエラーが出ることがあります。

最初は全部読めなくて大丈夫です。

まずは、

– どのファイルで起きているか
– 何行目あたりか
– 何という名前が見つからないのか

を見るだけでも十分です。

よく見るエラーの雰囲気見直す場所
何かが not defined変数名・関数名の書き間違い
null と出るid名のずれ、要素を見つけられていない
Unexpected tokenカッコやカンマの書き忘れ
script.js が見つからないscriptタグのパス

エラーは怒られているというより、
「ここで止まりました」というヒントです。
最初は怖く見えますが、場所を教えてくれる
メモとして見ればOKです。

カッコと記号の抜けを見直す

よくある書き忘れを確認する

  • ” ” の閉じ忘れがないか
  • ( ) の閉じ忘れがないか
  • { } の閉じ忘れがないか
  • ; の有無で読みづらくなっていないか
  • 配列やオブジェクトのカンマが抜けていないか
  • 関数名の大文字・小文字がそろっているか

JavaScriptでは、
カッコや引用符の抜けで止まることがあります。

特に、

const message = "こんにちは";
JavaScript

のような文字は、
” ” で囲む必要があります。

また、関数や if の中では、
{ } の範囲も見直します。

表示切り替えのclass名を見る

classList.toggle が効かない時の確認

前回のように classList.toggle を使う時は、
JavaScript側とCSS側のclass名が合っているか確認します。

JavaScript側が、

notice.classList.toggle("is-hidden");
JavaScript

なら、CSS側も、

.is-hidden {
  display: none;
}
CSS

になっている必要があります。

JavaScript側CSS側結果
“is-hidden” .is-hidden合っている
“isHidden”.is-hiddenずれている
“hidden”.is-hiddenずれている
止まった時の型を持つ

動かない時の確認テンプレート

JavaScriptが動かない時は、
下の順番で確認すると落ち着いて見直せます。

  • scriptタグのパスは合っているか
  • script.js の最初に console.log を入れて表示されるか
  • HTML側の id と JavaScript側の getElementById が合っているか
  • ボタンの id は合っているか
  • addEventListener の中に console.log を入れて反応するか
  • コンソールに赤いエラーが出ていないか
  • カッコ・引用符・カンマの抜けがないか
toshi
toshi

止まった時は、上から順に見れば大丈夫です。
毎回この順番で見直すと、原因を探しやすくなります。

少しだけ変えてみる(練習)
  • script src のパスをわざと間違えて、console.log が出ないことを確認する
  • id名を1文字変えて、動かなくなることを確認する
  • addEventListener の中に console.log を入れて、クリック反応を見る
  • classList.toggle のclass名を変えて、表示切り替えが止まるか見る
  • 直したら動くところまで戻してみる

あえて少し壊してみると、
何が原因で動かなくなるのかが見えやすくなります。

ただし、壊したあとに戻せるように、
元のコードはコピーして残しておくと安心です。

よく止まる場所をまとめて確認する

よくあるつまずき(ここだけ確認)

Q
「つまずき①:console.log が出ない」

まず script.js が読み込まれているか確認します。

index.html の最後に、

<script src="js/script.js"></script>
HTML

があるかを見ます。

さらに、script.js の最初に、

console.log("script.js が読み込まれました。");
JavaScript

を書いて、コンソールに表示されるか確認します。

Q
「つまずき②:ボタンを押しても反応しない」

ボタンのid名を確認します。

HTML側が、

<button id="changeButton" type="button">
	表示を変える
</button>
HTML

なら、JavaScript側も、

const changeButton = document.getElementById("changeButton");
JavaScript

のように同じ名前にします。

Q
「つまずき③:文字が書き換わらない」

まず、対象の要素を取得できているか確認します。

console.log(message);
JavaScript

これが null になっている場合、
id名がずれている可能性があります。

HTML側の id と JavaScript側の getElementById を見直します。

Q
「つまずき④:表示・非表示が切り替わらない」

classList.toggle のclass名と、CSS側のclass名を確認します。

JavaScript側が、

notice.classList.toggle("is-hidden");
JavaScript

なら、CSS側も、

.is-hidden {
  display: none;
}
CSS

になっているか確認します。

次へ進むために整理する

今回のまとめ(ここだけ押さえればOK)

  • 動かない時は script.js の読み込みから確認する
  • console.log は途中確認に使える
  • id名のずれはかなり多いつまずきポイント
  • addEventListener の中に処理があるか確認する
  • コンソールの赤いエラーは原因を探すヒントになる
  • class名のずれも表示切り替えでよく起きる
確認できたことを振り返る

今日のゴール確認(できた判定)

ここまでできたらOKです。

  • JavaScriptが動かない時に見る順番が分かった
  • script.js の読み込み確認ができた
  • id名のずれを確認できた
  • console.log で途中確認ができた
  • 次の JavaScript 4-1 に進む準備ができた
小さな制作で動きを形にする

次に読む(JavaScript 4-1へ)

今回は、JavaScriptが動かない時の見直し方を整理しました。

次は、
ここまでの内容を使って、
ボタンで表示を切り替えるミニ制作に進みます。

DOM操作、クリック処理、classList を組み合わせて、
小さな動きのあるページを作っていきます。

確認用のコードで見直す

JavaScript 3-2 の一例zipについて

この記事の内容は、JavaScript 3-2 の一例として zip ファイルを用意しました。

最初はそのまま開いて動きを確認し、
そのあとで id 名や script のパスを少し変えて、
どこで止まるかを見てみると理解しやすいです。

“正解を暗記するもの”ではなく、
「こういう形でも作れる」という確認用として使ってください。

javascript-03-02-example.zip
└─ javascript-03-02-example/
  ├─ index.html
  ├─ css/
  │ └─ style.css
  └─ js/
    └─ script.js

PR:最初の1冊(必要な方だけ)

PR:JavaScriptを進めるための参考(必要な方だけ)
JavaScriptは、エラー確認・DOM操作・イベント処理あたりで少しつまずきやすいので、必要な方だけ参考本の紹介を置いておきます。
まずは記事内のコードだけでも十分進めます。
※価格や在庫は変わるため、最終確認はリンク先でお願いします。

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
toshi
toshi
フルスタックエンジニア
C型肝炎や感染症の闘病を経て現在通院中
フリーランスとして今日を生きる、それがすべて。
静かな光の中で、歩みを止めずに生きていく。
実験大好きなので色々とやっていきます。
記事URLをコピーしました