我对此 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();
};
是的,这个当前的代码工作正常。但是当我添加多个 MyClass 对象时会出现问题:
window.onload = function() {
var s = new MyClass();
s.createButton();
var w = new MyClass();
w.createButton();
/* ...and many other buttons */
};
出于某种原因,仅当我单击最后创建的按钮时才会触发onclick事件。我不知道为什么。
一种解决方法可能是这样的:
<input type="button" onclick="javascript:doSomeThing();" />
但不幸的是,这不是正确的解决方案,因为我的目标是 onclik 事件也应该能够调用另一个类方法。(这些方法尚未创建)。
如何使此代码正常工作?任何形式的帮助表示赞赏。