2012-06-13 246 views
1

的代碼看起來像這樣的JavaScript:訪問嵌套對象

function Scripts() {this.FindById = function (id) { 
    this.FindById.constructor.prototype.value = function() { 
     return document.getElementById(id).value; 

    }}} 

var Control = new Scripts();

現在,當我說Control.FindById( 「T1」)值()。我無法獲得textInput(「T1」)的值。

+1

該代碼是...奇怪。 – Pointy

回答

1

看來,你的代碼是比較複雜那麼一點應該是;-)

個人而言,我會寫這樣(未測試):

function Scripts() { 
    this.findById = function(id) { 
    var el = document.getElementById(id); 

    return { 
     value: function() { 
     return el.value; 
     } 
    } 
    } 
} 

findById()現在關閉了一節點並返回一個可以返回其值的接口。

而且,你的想法聽起來很像單例,所以你甚至不需要額外的Scripts構造:

var Control = { 
    findById: function(id) { 
     var el = document.getElementById(id); 

     return { 
      value: function() { 
       return el.value; 
      } 
     } 
    } 
} 

工作例如:http://jsfiddle.net/YYkD7/

+0

對不起,我的錯誤是返回document.getElementById(id).value。我不知道如何「=」進來之間 – Rakesh

+0

它力氣工作的情況下:( – Rakesh

+0

@Rakesh很抱歉聽到,但這裏有一個工作小提琴:http://jsfiddle.net/YYkD7/ –

0

試試這個:

function Scripts() {this.FindById = function (id) { 
    this.FindById.constructor.prototype.value = function() { 
     return document.getElementById(id).value 
    }}} 

您沒有關閉最後的「}」:-)

+0

「}」我錯過了這裏。 – Rakesh

+0

好吧,沒關係吧:) – Anonymous