2011-05-19 57 views
3
Type= { 
     Container: $get('ctl00_Main_rbtnlst_Type'), 
     Local: this.Container.getElementsByTagName('input'), 
     Foreign:this.Container.getElementsByTagName('input') 
    } 

未定義在javascript中的訪問對象的屬性的對象裏面,當我通過Firebug的控制檯內的代碼跑我得到錯誤「this.Container」是不確定的,即使它被定義。我還可以如何訪問Local和Foreign屬性中的Container屬性。我甚至試過這個。「這」是由另一個屬性

Type= { 
     Container: $get('ctl00_Main_rbtnlst_Type'), 
     Local: Container.getElementsByTagName('input'), 
     Foreign:Container.getElementsByTagName('input') 
    } 

回答

3

實例化時不能得到this。你可以這樣做:

Type= { 
     Container: $get('ctl00_Main_rbtnlst_Type'), 
     Local: function(){return this.Container.getElementsByTagName('input');}, 
     Foreign: function(){return this.Container.getElementsByTagName('input');} 
    } 

,然後再使用Type.Local()/Type.Foreign()

上獲得當地或外國,或者如果您在實例中需要本地/國外使用此reduntant模式:

Type= { 
      Container: $get('ctl00_Main_rbtnlst_Type'), 
      Local: $get('ctl00_Main_rbtnlst_Type') 
        .getElementsByTagName('input');}, 
      Foreign: $get('ctl00_Main_rbtnlst_Type') 
         .getElementsByTagName('input');} 
     } 

或直接使用此執行功能:

var Type = (function(){ 
    var container = $get('ctl00_Main_rbtnlst_Type'), 
     local = container.getElementsByTagName('input'), 
     foreign = container.getElementsByTagName('input'); 
    return { 
      Container: container, 
      Local: local, 
      Foreign: foreign 
      } 
})(); 

要完整,您還可以使用一些getters,但不會在所有的瀏覽器(尤其不要在IE < 9)

var Type = { 
    Container: $get('ctl00_Main_rbtnlst_Type'), 
    get Local() {return this.Container.getElementsByTagName('input');}, 
    get Foreign() {return this.Container.getElementsByTagName('input');} 
} 

LocalForeign都是一樣的,就是要這麼做嗎?

+0

@Kooilnc匿名函數是唯一的出路?我怎麼能用一個屬性 – Deeptechtons 2011-05-19 10:43:48

+0

@Deeptechtons:見編輯 - >立即執行函數 – KooiInc 2011-05-19 10:48:38

+0

@Kooilnc現在爲什麼我沒有想到關閉謝謝提醒標記爲答案btw'ctl00_Main_rbtnlst_Type'是一個表,並有2個單選按鈕在他們內部,因此本地和外國會指兩種不同的控制。謝謝 – Deeptechtons 2011-05-19 11:02:22

2

你可以這樣做:

var container = $get('ctl00_Main_rbtnlst_Type'); 
Type = { 
    Container: container, 
    Local: container.getElementsByTagName('input'), 
    Foreign: container.getElementsByTagName('input') 
} 

但你可能想要的是這樣的:

function Type(containerId){ 
    var container = $get(containerId); 
    return { 
     Container: container, 
     Local: container.getElementsByTagName('input'), 
     Foreign: container.getElementsByTagName('input') 
    } 
} 

var obj = Type('ctl00_Main_rbtnlst_Type'); 
// can now use obj.Container, obj.Local and obj.Foreign 
相關問題