私はモーダルで読み込まれたフォームに連絡しました。私は下のスクリプトをフォームIDが存在するページ内に置くとうまくいきますが、スクリプトを取り出してそれぞれのjsファイルに入れるとDOMが実行されません。コンソールに表示されます:"Uncaught TypeError:index.phpでnullのプロパティ 'addEventListener'を読み込めません。IDボタンがあるページの外に置いたときにJSが実行されない
<button id="myBtn"> Contact Us </button>
<div id="myModal" class="modal">
<div class="modal-content">
<span class="close">×</span>
/** form fields**/
</div>
</div>
var modal = document.getElementById('myModal');
var btn = document.getElementById("myBtn");
var span = document.getElementsByClassName("close")[0];
btn.onclick = function() {
modal.style.display = "block";
}
span.onclick = function() {
modal.style.display = "none";
}
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
ウィンドウが読み込まれるまで待つ必要があります。要素が存在する前にイベントリスナーをバインドしようとしています。あなたのコードをウィンドウの準備ブロックに入れてください。 – FMashiro
フォームを作成したbodyタグに特定のスクリプトをロードします。試してみてください。 –
1つの変数が1つのファイルで宣言され、別の変数で使用されている場合は、スクリプトの順序にも注意してください(ファイル依存関係の読み込みが完了することを保証するシステムを持たない限り避けてください) – Kaddath