2012-01-30 69 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;