无法使用object方法从自定义javascript对象数组属性中获取对象

时间:2012-01-30 21:54:14

标签: javascript

我有一个带有数组属性的javascript类。我在对象上创建了一个方法,以从该数组中返回特定对象。然而,它没有像我预期的那样工作。我没有在任何浏览器中收到错误但是当我尝试将它放入jsfiddle时我得到一个错误说

错误: 第5行的问题18:无法设置未定义的属性“first” 隐含的全球:第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]);
}

2 个答案:

答案 0 :(得分:1)

我在脚本中发现的唯一问题是使用

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

其中 d 是未定义的变量。我相信你打算返回 divId

将该声明更改为 if(obj.containerDivs [i] == divId)return divId;

答案 1 :(得分:1)

this.GetContainerDiv = function(obj,divId){         for(var i = 0; i&lt; obj.containerDivs.length; i ++){

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