javascript エラー「Uncaught TypeError: Cannot set property ‘innerHTML’ of null」が発生した場合の対処法
- 作成日 2020.08.08
- 更新日 2022.08.02
- javascript
- javascript
javascriptでエラー「Uncaught TypeError: Cannot set property ‘innerHTML’ of null」か「Uncaught TypeError: Cannot set properties of null (setting ‘innerHTML’)」が発生した場合の原因と対処法を記述してます。
環境
- OS windows10 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 103.0.5060.134
エラー全文
以下のコードを実行に発生
※その他のパターンは後述してます。
<script>
let txt = document.getElementById("txt");
txt.innerHTML = "test";
</script>
<body>
<div class="container">
<p id="txt"></p>
</div>
</body>
エラーメッセージ ( chrome 89 )
Uncaught TypeError: Cannot set property 'innerHTML' of null
chromeのバージョンが「103」では、以下のエラーとなります。
Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')
firefox 105 の場合は、以下のエラーが発生します。
Uncaught TypeError: txt is null
原因
「html」は上から順番に読み込まれているため「js」が読まれた時点では、下にある「pタグ」は、まだ認識されていない状態なため
対処法
「js」を「html」より下部に記述するか、
<body>
<div class="container">
<p id="txt"></p>
</div>
</body>
<script>
let txt = document.getElementById("txt");
txt.innerHTML = "test";
</script>
「window.onload」で全てのコードが読まれた後に「js」を実行させる方法があります。
<script>
window.onload = function(){
let txt = document.getElementById("txt");
txt.innerHTML = "test";
}
</script>
<body>
<div class="container">
<p id="txt"></p>
</div>
</body>
その他のパターン
要素が存在しない
そもそも、指定した要素が存在しない場合も発生します。
<p id="txt"></p>
<script>
let txt = document.getElementById("noelm");
txt.innerHTML = "test";
// Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')
</script>
firefox102では以下のエラーとなります。
Uncaught TypeError: txt is null
存在チェックをすれば、存在しない要素に対して実行されないためエラーは発生しません。
let txt = document.getElementById("noelm");
if( txt !== null ){
txt.innerHTML = "test";
}
-
前の記事
jquery propメソッドを使ってチェックボックスの状態を確認して操作する 2020.08.07
-
次の記事
Rails6 Foundationを使用する手順 2020.08.08
コメントを書く