質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

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

Q&A

解決済

3回答

607閲覧

ボタンをクリックしてもイベントが発生しない

ishidakouiki

総合スコア73

JavaScript

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

0グッド

0クリップ

投稿2022/04/27 03:08

ボタンをクリックしたらイベントを発生したいのですが、
クリックしても何も反応がない状態で、ブラウザの検証ツールのコンソールには、

edit:52 Uncaught TypeError: Cannot read properties of null (reading 'addEventListener') at

とエラーが表示されている状態です。

edit.balde.php

1~省略~ 2<script> 3const test = document.getElementById("test"); 4 test.addEventListener('click', function(e){ 5 console.log('リンクがクリックされました。'); 6 // デフォルトのイベントをキャンセル 7 e.preventDefault(); 8 }, false); 9</script> 10~省略~ 11<form action="{{ route('member.update') }}" 12~省略~ 13</from> 14~省略~ 15<div> 16 <button type="submit" class="submit" id="test" form="change-myinfo"> 17 </button> 18 </div> 19~省略~

記述等に問題ありますでしょうか?

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

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

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

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

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

itagagaki

2022/04/27 03:23

<script>~</script>を</body>の直前に置くとどうですか?
guest

回答3

0

submitボタンをformの外に出したいならきちんとformにidを振って管理してください

javascript

1<script> 2document.addEventListener('click', e=>{ 3 if(e.target.closest('#test')){ 4 console.log('リンクがクリックされました。'); 5 e.preventDefault(); 6 } 7}); 8</script> 9<form id="change-myinfo"> 10<input name="hoge" value="123"> 11</from> 12<div> 13<button type="submit" id="test" form="change-myinfo"><span>ボタン</span></button> 14</div>

投稿2022/04/27 03:48

編集2022/04/27 03:49
yambejp

総合スコア114839

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

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

0

ベストアンサー

良くあるミスですが、スクリプトが読み込まれて解析される時には button id="test" はまだ存在しないのでリスナーをアタッチできないのが原因です。

質問のスクリプトを window.onload = function() { ... } で囲う(スクリプトを ... の部分にする)とどうなりますか?

投稿2022/04/27 03:43

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

scriptの読み込ませる位置に問題があるように思えます。
上から順番に読み込まれていくのでid="test"が生成される前に、scriptが読み込まれるため、
id="test"に対してクリックイベントを発火させようとしても、対象のidが見つからないためエラーになっていると考えられます。

したがって、scriptを読み込ませる位置を一番最後に置いてみてはどうでしょうか?

投稿2022/04/27 03:35

jun26

総合スコア191

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問