我有这个JavaScript代码的问题:JavaScript类和事件处理程序
function MyClass() {
var id_nr = Math.ceil(Math.random() * 999999);
this.button_id = 'button_' + id_nr;
}
MyClass.prototype = {
createButton: function() {
var msg = 'Button \'' + this.button_id + '\' was clicked';
var my_button = (
'<input type="button" id="'
+ this.button_id
+ '" value="Click Me" /\>'
);
document.body.innerHTML += '<div>' + my_button + '</div>';
document.getElementById(this.button_id).onclick = function() { alert(msg); }
}
};
window.onload = function() {
var s = new MyClass();
s.createButton();
};
是的,这个当前的代码工作正常。
window.onload = function() {
var s = new MyClass();
s.createButton();
var w = new MyClass();
w.createButton();
/* ...and many other buttons */
};
出于某种原因,的onclick只有当我单击已创建的最后按钮事件将被触发。但是,当我添加多个MyClass的对象出现的问题。我不知道为什么。
一个解决办法可能是这样的:
<input type="button" onclick="javascript:doSomeThing();" />
但不幸的是,这不是正确的解决办法右排,因为我的目标是,onclik事件应该能够调用另一个类的方法为好。 (这些方法尚未创建)。
如何让这段代码正常工作?任何形式的帮助表示赞赏。
我已经试过jQuery,但同样的错误依然存在。此外,ID-s不能成为此处的原因:每个输入元素在此代码中都有一个唯一的ID。 – user2266705 2013-04-10 15:53:44
修正了我的回答,我误读了你的ID创建的方式 – Sunyatasattva 2013-04-10 15:56:07
我还在JSBin中添加了一些工作示例,请检查它们! :) – Sunyatasattva 2013-04-10 16:00:55