javascriptを使用してonclickイベントを設定しようとしています。次のコードが機能します。
var link = document.createElement('a');
link.setAttribute('href', "#");
link.setAttribute('onclick', "alert('click')");
次に、appendChildを使用して、ドキュメントの残りの部分へのリンクを追加します。
しかし、私は明らかにアラートよりも複雑なコールバックが欲しいので、これを試しました:
link.onclick = function() {alert('clicked');};
この:
link.onclick = (function() {alert('clicked');});
しかし、それは何もしません。リンクをクリックしても何も起こりません。chromeを使用してテストしましたが、DOMオブジェクトを参照すると、その要素についてonclick属性がNULLであることがわかります。
関数をonclickに渡せないのはなぜですか?
編集:
以下に提案するようにaddEventListenerを使用してみましたが、同じ結果になりました。リンクのDOMは、onclickをnullとして表示します。
私の問題は、この要素のDOMがまだ完全に構築されていない可能性があることです。この時点でページが読み込まれ、ユーザーはボタンをクリックします。ボタンは、document.body.appendChildを呼び出すことによってページに追加する新しいdivを構築するjavascriptを実行します。このリンクは新しいdivのメンバーです。これが私の問題である場合、どうすれば回避できますか?