2012-01-30 72 views
0

javascript對象數組屬性定製獲得對象我有一個數組屬性一個JavaScript類。我在對象上創建了一個方法來從該數組中返回一個特定的對象。然而,它沒有按我的預期工作。我沒有得到一個錯誤在任何瀏覽器,但是當我試圖把它變成的jsfiddle我回來一個錯誤說不能從使用對象的方法

錯誤:在第5行字18 問題:無法設置屬性「第一」未定義 隱含全球的:1

我不知道這意味着什麼,但它指的是這條線

for (var i = 0; i < obj.containerDivs.length; i++) { 

下面是完整的代碼。誰能告訴我我做錯了什麼?爲什麼GetContainerDiv函數不會返回dv,但後來當我遍歷元素時沒有使用它的函數可以正常工作。謝謝。

Page = function() { 
    this.containerDivs = ["div1", "div2", "div3"]; 

    this.GetContainerDiv = function(obj, divId) { 
     for (var i = 0; i < obj.containerDivs.length; i++) { 
      if (obj.containerDivs[i] == divId) return d; 
     } 
     return null; 
    } 
} 

var page = new Page(); 

var dv = page.GetContainerDiv(page, "div1"); 
console.log(dv); 

for (var i = 0; i < page.containerDivs.length; i++) { 
    if (page.containerDivs[i] == "div1") console.log(page.containerDivs[i]); 
} 
+1

我注意到的第一件事是'返回d '在'for'循環中...'d'在哪裏申報? – 2012-01-30 21:59:27

回答

1

this.GetContainerDiv =函數(OBJ,DIVID){ 爲(VAR I = 0;我< obj.containerDivs.length;我++){

 if (obj.containerDivs[i] == divId) 
          return d; // D IS NOT DEFINED 
    } 
    return null; 
} 
+0

哇,我不知道我是怎麼錯過的。謝謝!但是,仍然,任何想法這個錯誤是關於什麼?即使我修正了「d」錯誤,我仍然得到這個錯誤 - 錯誤:第5行字符的問題18:無法設置未定義的屬性'第一'隱含的全局:謝謝。 – 2012-01-31 02:47:19

+0

好吧,我只是刪除控制檯的句子和所有工程正常 – elopez 2012-01-31 17:23:04

+0

這工作正常,var page = new Page(); var dv = page.getContainerDiv(page,「div1」); \t \t alert(「dv:」+ dv); (page.containerDivs [i]:「+」)(012) page.containerDivs [I]); \t \t} – elopez 2012-01-31 17:28:04

1

,我在你的腳本中發現的唯一的問題是與線

if (obj.containerDivs[i] == divId) return d; 

其中d是一個不確定的變量。我相信你打算返回divId

更改該語句如果(obj.containerDivs [I] == DIVID)返回DIVID;