IE动态添加按钮未调用单击

时间:2009-08-21 02:27:04

标签: javascript internet-explorer

我有一些代码通过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中不起作用,或者有关于如何编写此代码以便它可以工作的建议?

感谢。

3 个答案:

答案 0 :(得分:4)

您可以尝试避免使用setAttribute,只需执行

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

答案 1 :(得分:0)

那将在firefox中运行,IE稍有不同试试

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

OR

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

这应该有效,因为我已经开始工作了。如果STILL没有这样做,那么YUI有一个事件框架,你可以在其中执行此操作

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

有关更多示例,请参阅http://developer.yahoo.com/yui/examples/event/eventsimple.html

答案 2 :(得分:0)

如果你可以使用jQuery,请使用它。这不仅可以让您更轻松地操作DOM,还可以让您简单地说$('#myNewButton').click(function(){//hey});

并确保它有效。

jQuery