2012-04-12 83 views
0
function ge(id){ 
    this.id=id; 
    this.d=document; 
    this.w=window; 
    return document.getElementById(id); 
} 
ge.prototype={ 
    set_in:function(value){ 
     this.innerHTML=value; 
    }, 
    getIn:function(){ 
     return document.getElementById(this.id).innerHTML; 
    }, 
    foc:function(){ 
     document.getElementById(this.id).focus(); 
    } 
} 

我想要做的是,如果我叫GE(「ID」)。getIn()將導致的innerHTML該元素的有沒有人告訴我什麼是錯,此代碼

+1

你會得到什麼? – 2012-04-12 14:23:27

+0

此錯誤:無法調用null的方法'getIn' – 2012-04-12 14:24:36

+1

爲什麼不設置http://jsfiddle.net/? – Jakub 2012-04-12 14:25:11

回答

1

你需要調用new ge("header").getIn();,而不是僅僅ge("header").getIn(); - 或者創建一個返回的ge一個新實例的另一個功能 - 對於前:

function newge(id) { 
    return new ge(id); 
} 
function ge(id){ 
    this.id=id; 
    this.d=document; 
    this.w=window; 
    return this; //document.getElementById(id); 
} 
ge.prototype={ 
    set_in:function(value){ 
     this.innerHTML=value; 
    }, 
    getIn:function(){ 
     return document.getElementById(this.id).innerHTML; 
    }, 
    foc:function(){ 
     document.getElementById(this.id).focus(); 
    } 
} 
newge("header").getIn(); 
+0

只要他從構造函數中返回一個對象,這將無法工作。 – jAndy 2012-04-12 14:32:15

+0

這絕對是。看到這個小提琴:http://jsfiddle.net/RRu89/ - 如果沒有首先實例化對象,你完全無法調用方法 - 這是代碼問題。 – techfoobar 2012-04-12 14:34:43

+0

無法讀取null的屬性'innerHTML' – 2012-04-12 14:34:55

2

你在該構造函數中返回一個DOM Node。我想你使用它作爲構造函數,所以你覆蓋它實際上應該返回的Object

只跳過

return document.getElementById(id); 

,你是好。您可以將該節點引用存儲在某個this.myRef值中。


在刪除了return語句之後,您需要創建一個實例。像

var myGE = new ge('id'); 

,然後你終於可以調用

myGE.getin(); 
+0

我做到了這一點,但它仍然不起作用 – 2012-04-12 14:36:50

+0

@BhavikPatel:請參閱更新的答案。 – jAndy 2012-04-12 14:40:07

+0

但我不想每次創建對象 – 2012-04-12 14:44:42

相關問題