エラー "Cannot set property 'onclick' of null "でJSイベントをトリガーする。
2022-02-25 04:30:53
JSイベントエラー "プロパティ 'onclick' にnullを設定できません"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>event</title>
<script>
var btn1 = document.getElementById('btn1');
var demo1 = document.getElementById('demo1');
// onclick event
btn1.onclick = function () {
demo1.innerHTML = 'hello world!
}
</script>
</head>
<body>
<button id="btn1">click me</button>
<p id="demo1"></p>
</body>
</html>
上記のコードを実行すると、以下のようなエラーが報告されます。
一番下にjsのコードを入れて読み込ませたら、正常に動作するようになりました
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>events</title>
</head>
<body>
<button id="btn1">clickme</button>
<p id="demo1"></p>
<script>
var btn1 = document.getElementById('btn1');
var demo1 = document.getElementById('demo1');
// onclick event
btn1.onclick = function () {
demo1.innerHTML = 'hello world!
}
</script>
</body>
</html>
原因を分析する。
jsコードやjsファイルをheadの間に配置した場合、onclickイベントやonmouseoverイベントがバインドされていると、コンソールに上記のようなエラーが報告されます。これは、ブラウザがhtmlドキュメントをトップダウン順に読み込み、jsコードを実行する前にボタンノードを読み込むからです。ブラウザがトップダウンで解析すると、onclickにバインドされたボタンノードが見つからず、エラーが報告されます。
回避策
- jsコードやjsの外部ファイルを一番下に置いて読み込ませる
- window.onload = function () {}でjsコンテンツをラップする。
関連
-
MFCフレームワーク_CRT_SECURE_NO_WARNINGS問題解決
-
undefinedErrorお使いのCPUは、このTensorFlowバイナリが使用するためにコンパイルされていない命令をサポートしています。AVX2 FMA
-
のエラーが発生しました。アボートトラップ:6(プロジェクト'xx'のターゲット'xx'において)
-
IntelliJ IDEAでgitを使用してリモートリポジトリから読み込めなかった問題を解決する
-
エラーです。モジュール 'less' が見つかりません。
-
Error:SSL peer shut down incorrectlyの完全な解決法
-
Cas プロキシがエラーを報告 error.authentication.credentials.bad
-
フロントエンドのhttpリクエストタイムアウトの概要について
-
laravel: コマンドが見つからない問題の解決
-
dockerの "no such file or directory "エラーの解決法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
'node' は内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
DataTableプラグインエラーです。Uncaught TypeError: 未定義のプロパティ 'style' を読み取ることができません。
-
vimコマンドの完全なリスト
-
Python Basics: io.UnsupportedOperation: 読み取れません。
-
ArrayAdapter がリソース ID に TextView を要求する問題を解決する方法
-
error: '*' のメンバー '*' の要求が、クラス型でない '*' である。
-
django+uwsgi+nginxプロジェクトをubuntu環境に展開し、上流の早期接続切断のエラーを解決することができる。
-
マイクロサービスの実践(I) OAUTH 2.0統一認証認可に基づくマイクロサービス基盤
-
Windowsソケットのエラーコードとエラーの原因
-
.addEventListenerは、ある理由でイベントを追加します。