← エラー辞典に戻る

JavaScript

Uncaught TypeError: Cannot set properties of null (setting 'textContent')

nullに対してプロパティを設定しようとしている

こんな症状

textContentやinnerHTMLに代入した行でこのエラーが出る。getElementByIdが要素を見つけられずnullを返しているのが原因で、多くはid名の不一致かscriptタグの位置だよ。

まず試す

JSの id 文字列が HTML の id 属性と完全一致しているか確認し、script を body の閉じタグ直前に置く(または defer)。

js
<!-- HTMLのidとJSの文字列を完全に一致させる -->
<button id="send-btn">送信</button>
<script>
  document.getElementById("send-btn").textContent = "送信中…";
</script>

これで直らなければ、下の「自分のケース」を確認。

🔍 自分のケースはどれ?

  • id名が少し違う(sendBtn と send-btn など)
    → 大文字小文字・ハイフンも別物。HTMLの id をコピペしてJSに貼る。
  • script が要素より前にある
    → script を body の閉じタグ直前へ。または <script defer src="..."> を付ける。
  • setting が innerHTML や value でも同じ
    → 原因と直し方は同じ。対象要素がちゃんと取れているかを確認する。

なぜ起きる?

document.getElementByIdなどでnullが返っているのに、そのままtextContentやinnerHTMLなどのプロパティに代入しようとしたよ。原因は2つに絞れることが多くて、(1) HTMLのid属性とJSに書いた文字列が一致していない(大文字小文字やハイフンの違いも別物扱い)、(2) scriptタグがHTML要素より前にあって、要素が作られる前にJSが実行されている、のどちらかだよ。setting の部分が 'innerHTML' や 'src' や 'value' になっていても原因と直し方は同じ。読み取りで失敗すると Cannot read properties of null という別のエラーになるよ。

✕ エラーが起きるコード
<button id="send-btn">送信</button>
<script>
  // id が一致していない(sendBtn ≠ send-btn)
  document.getElementById("sendBtn").textContent = "送信中…";
  // Uncaught TypeError: Cannot set properties of null
</script>
✓ 直したコード
<button id="send-btn">送信</button>
<script>
  // HTMLのidと完全に同じ文字列を指定する
  document.getElementById("send-btn").textContent = "送信中…";
</script>

✅ 直ったか確認

console.log(document.getElementById('id名')) が null でなく要素を表示し、エラーが消えればOK。

🆘 まだ直らないときは

要素をJSで動的に作っている場合は、その要素をページに追加した後にアクセスしているか順番を確認しよう。

Q&Aで質問する →

この解決法は役立ちましたか?

🔗 関連するエラー

🔗 別カテゴリの関連エラー

📖 この問題を学べるレッスン

JSレッスン6:DOM操作で根本から理解する →

✏️ 手を動かして練習

このテーマの図解ドリルで実際に書いて確認する →

📝 関連ブログ記事

📖 関連する用語

🚀 JSレッスン6:DOM操作で根本解決しよう!

このエラーの背景にある仕組みを、手を動かしながら学べるレッスンがあります。完全無料・登録不要。

JSレッスン6:DOM操作へ →

❓ 関連するQ&A