2009-08-21 61 views
2

JavaScriptを使用して新しいボタンを動的に作成するコードがあります。クリックするとJavaScript関数が呼び出されます。コードはFirefox、Chrome、Operaでも期待通りに機能しますが、IE 7では動作しません(IE6では気にしません)。動的に追加されたボタン動的に追加されたボタンクリックしない

ボタンが作成されて表示されますが、onclickイベントは呼び出されません。

var newButton = document.createElement('input'); 
newButton.setAttribute('id','btnChat_'); 
newButton.setAttribute('type','button'); 
newButton.setAttribute('onclick','askQuestion()'); 
newButton.setAttribute('value', 'Respond'); 
document.getElementById('frmChat').appendChild(newButton); 

誰もが、これはIEで動作しない理由を知っている、またはそれが動作しますので、私はこのコードを書くことができる方法についての提案を持っていますか?

ありがとうございました。 FirefoxやIEで動作します

答えて

4

あなたは、setAttributeメソッドの回避使用を試してみて、ちょうどそれらのいずれかで

newButton.onclick = function(){ askQuestion(); }; 
+1

バグ:IEでsetAttribute()を使用してインラインイベントハンドラを設定することはできません。 – scunliffe

0

は私が仕事にそれを得ているように動作する必要があること

newButton.onclick = function() {askQuestion();}; 

OR

newButton.onclick = new Function('askQuestion()'); 

若干異なる試みです。それはまだそれをしない場合は、YUIは、あなたがこの

YAHOO.util.Event.addListener(newButton,'click',askQuestion); 

を行うことになるでイベントフレームワークは、より多くの例についてhttp://developer.yahoo.com/yui/examples/event/eventsimple.htmlを参照してくださいました。

+1

愛を行うことができます。 –

+0

数回編集してみてください。 – Zoidberg

+0

誰か、誰かが私を打ち負かす!! – Zoidberg

0

jQueryを使用できる場合は、それを使用してください。これにより、DOMを簡単に操作できるだけでなく、$('#myNewButton').click(function(){//hey});

となり、正しく動作することが保証されます。

jQuery

+1

はい、jQueryを使用する方が簡単ですが、これは一般的なJavaScriptに関する質問です.jQueryはあらゆる環境で実用的ではありません。 –

+1

私はJQueryをもっと使いたいと思いますが、私はJavaScriptなしでやりとりする方法をかなりよく理解しています。だから、私はいつも物事にアプローチしています。最近は、JQueryを深く理解するために取り組んでいます。 –

+0

知らないのは、使用しない最悪の理由です。偉大なオークを取る前に、斧を鋭くするために30分を費やしてください。お願いします。 @Jason:確かに、jqueryが不可能な場所(ブラウザレスのjavascriptパーサーなど)は適切ではありませんが、明らかにここでは当てはまりません。 –

関連する問題