2009-08-21 44 views
2

我有一些代碼,通過JavaScript動態創建一個新的按鈕,當點擊時調用JavaScript函數。代碼的工作方式和Firefox,Chrome,Opera一樣,但是低得多,它在IE中不起作用(我甚至不打算用IE6)。IE動態添加按鈕沒有調用點擊

該按鈕被創建並顯示,但它不會調用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瀏覽器,或有一個建議,我怎麼能寫這個代碼,以便它是否行得通呢?

謝謝。

回答

4

你可以嘗試使用避免的setAttribute的,只是做

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

錯誤:您無法在IE中使用setAttribute()設置任何內聯事件處理程序。 – scunliffe 2009-08-21 03:28:13

0

這將工作在Firefox,IE是略有不同的嘗試

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

沒有愛和這兩個的。 – 2009-08-21 02:56:40

+0

做了幾個編輯,現在試試。 – Zoidberg 2009-08-21 10:19:40

+0

該死的,有人也打我吧! – Zoidberg 2009-08-21 10:26:06

0

如果您可以使用jQuery,請使用它。這不僅會讓DOM更容易操作,它還會讓你簡單地說$('#myNewButton').click(function(){//hey});

並確保它可以正常工作。

jQuery

+1

是的,它更容易使用jQuery,但這是一個通用的JavaScript問題 - 而jQuery在每個環境中都不實用。 – 2009-08-21 02:42:51

+1

我想用JQuery做更多的事情,但是我非常瞭解如何在沒有JavaScript的情況下做事情,所以這就是我通常的做法。其中一天,我會深入瞭解JQuery。 – 2009-08-21 03:31:27

+0

不知道是不使用的最壞原因。花30分鐘在砍下偉大的橡木之前磨斧。請。 @Jason:當然,在jQuery不可行的地方是不適合的(例如,一個無瀏覽器的JavaScript解析器),但這顯然不是這種情況。 – 2009-08-21 13:34:44