我是OOP的新手,我试图重写一个简单的JS函数作为对象文字,然后作为构造函数。我成功地编写了对象文字版本,但是我在anon函数内部显然有一个范围问题,它处理onclick事件(在我的构造函数中)。请让我知道如何使onclick事件工作。JS:范围内构造函数功能
对象文本版本,它的工作原理:
var submit = {
form_id : "",
submit_button_id : "",
submit_form: function(){
var button = document.getElementById(submit.submit_button_id);
var form = document.getElementById(submit.form_id);
button.onclick = function(){
form.submit();
return false;
}
}
}
addLoadEvent(function(){
submit.form_id = "form_vars";
submit.submit_button_id = "but_submit";
submit.submit_form();
});
构造函数版本不工作:
function SubmitForm(button_id, form_id){
this.submit_button = document.getElementById(button_id);
this.form = document.getElementById(form_id);
this.submit_form = function(){
// problem function below
this.submit_button.onclick = function(){
this.form.submit();
}
}
}
addLoadEvent(function(){
var form_to_submit = new SubmitForm("but_submit", "form_vars");
form_to_submit.submit_form();
});
附:我知道我应该使用DOM API事件处理程序而不是HTML DOM。我一次只处理一件事。
你有没有考虑过像dojo或jquery这样的库?它们简化了面向对象编程,并通过基本的JavaScript提供改进的事件处理。 – ewh 2011-04-22 23:40:38