JavaScript对象未定义

时间:2011-06-21 06:10:20

标签: javascript object element

我需要一些帮助,请使用javascript对象。它是这样的:
我用html DOM元素调用此函数addFilter(element)

该功能如下所示:

function MyList() {
    this.arr = new Array();
    this.index = 0;
}

MyList.prototype.add = function(filter) {
    this.arr[this.index++] = filter;
    //alert(this.arr[0] + ' mylist arr');
}

function Filter(element) {
    this.setElement(element);
}

Filter.prototype.setElement = function (element) {
    this.element = element;
    this.kinorid = $(element).attr('id');
}

function addFilter(element) {
    filters.Add(new Filter(element));
}

var filters =  new MyList();

现在使用另一个函数,在我的情况下,函数创建了jquery UI Slider,每次滑块更改时,我需要获取发送到addFilter的元素的父元素,就像我在开始。所以我试着做

var value = filters.arr[0];

但就像我说它未定义。

任何人都可以通过查看代码来帮助我,并告诉我什么是错的。

非常感谢你。

2 个答案:

答案 0 :(得分:0)

你仍然没有说过你使用filters.arr[0]的地点或方式,如果没有它,你很难帮助你。

假设您使用它的代码看起来像这样:

AddFilter($("#theElement"));
display(typeof filters.arr[0]);
filters.arr[0].element.css("color", "blue");

应该有效; live example

我唯一的想法是AddFilterfilters未定义在同一范围内。您在filters内使用AddFilter,因此必须在与AddFilter相同的范围内(或在子范围内)定义filters。所以这没关系:

var filters;
function AddFilter() { ... }

这个

function AddFilter() { ... }
var filters;

这个

var filters;
$(function() {
    function AddFilter() { ... }
});

但不是

function AddFilter() { ... }
$(function() {
    var filters;
    // ...
});

...因为在最后一种情况下,AddFilter的定义超出了定义filters的范围。

答案 1 :(得分:0)

你的代码非常复杂,我根本不理解。无论如何,你正在寻找(我认为):

var value = filters.arr[0].element;

因为您将元素引用分配给arr[this.index]

顺便提一下,如果你传递一个元素,那么:

$(this).attr('id');

是一个非常缓慢的方法:

this.id;

修改

我使用的代码(在DOM中有一个id为'd0'的div):

var filters = new MyList();
AddFilter(document.getElementById('d0'));

alert(filters.arr[0].element);