2009-08-21 80 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