ページにまだ存在しない要素にクリックイベントリスナーを追加する際に問題が発生しています。ちょうど私が次の コードをJQuery内で実行していることに注意してください。準備が整っているので、DOMがロードされた後に実行されます。だから私はボタンのタイプとして使用しているdivを持っていますイベントリスナーを動的コンテナに追加する
<div id="openContainer"> ... </div>
ここでこのdivをクリックすると、別のdivがページに動的に追加されます。このdivは、上記のクリックイベントが発生した場合にのみ追加されます。追加されたdivには、 idの検索ボタンがあります。私はこれにイベントリスナーを追加しようとしています。これまでのところ、私はこれを実行すると、この
document.getElementById('openContainer').addEventListener('click', function() {
document.getElementById('search').addEventListener('click', function() {
alert("ADDED")
});
});
は、しかし、私はのdocument.getElementById(...)がnullのエラーを取得しています。私はこれの背後にある理由は、実際の動的divが追加される前にイベントリスナーが追加されているためだと思います。実際、タイムアウトなどで動作するため、これが当てはまります。
document.getElementById('openContainer').addEventListener('click', function() {
setTimeout(function() {
document.getElementById('search').addEventListener('click', function() {
alert("ADDED")
});
}, 2000);
});
タイムアウトなしでこれを行う方法はありますか?
おかげ
唯一の問題は、検索要素がまだ存在しないためにエラーが表示されることです。 –
問題を再現できるほどのコードを表示できますか?ポストされたアプローチはエラーを生成すべきではありません。なぜなら、 '' search ''というidを持つ要素が存在しなければ、それを必要とする 'else if'ブランチには入らないからです。 –