我是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