JavaScript对象未定义

JavaScript对象未定义,javascript,object,element,Javascript,Object,Element,我需要一些关于javascript对象的帮助。它是这样的: 我使用HTMLDOM元素调用这个函数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] +

我需要一些关于javascript对象的帮助。它是这样的:
我使用HTMLDOM元素调用这个函数
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滑块,每次滑块更改时,我都需要获取发送到
addFilter
的元素的父元素,就像我在开始时所说的那样。所以我试着去做

var value=filters.arr[0]

但就像我说的,它还没有定义

有谁能帮我检查一下代码,告诉我出了什么问题


多谢各位

您还没有说明在何处或如何使用
过滤器.arr[0]
,如果没有这些过滤器,您将很难获得帮助

假设使用它的代码如下所示:

AddFilter($("#theElement"));
display(typeof filters.arr[0]);
filters.arr[0].element.css("color", "blue");
它应该是有效的

我唯一的想法是如果
AddFilter
filters
不在同一范围内定义。您正在
AddFilter
中使用
filters
,因此
AddFilter
必须定义在与
filters
相同的范围内(或子范围内)。所以这很好:

var filters;
function AddFilter() { ... }
还有这个

function AddFilter() { ... }
var filters;
var filters;
$(function() {
    function AddFilter() { ... }
});
还有这个

function AddFilter() { ... }
var filters;
var filters;
$(function() {
    function AddFilter() { ... }
});
但不是

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

…因为在最后一种情况下,
AddFilter
的定义超出了定义
过滤器的范围。

您的代码非常复杂,我一点也不懂。无论如何,你正在寻找(我想):

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

顺便说一句,如果要传递元素,则:

$(this).attr('id');
这是一种非常缓慢的方式:

this.id;
编辑 我使用的代码(DOM中有一个id为“d0”的div):


您必须引用更多的代码,尤其是调用
过滤器.arr[0]
的实际上下文(就这点而言,
过滤器是什么-,我们可以猜测它可能是由
MyList
创建的一个实例,但我们不应该猜测)。你引用的代码应该是可以的。另外,请花点时间在问题中正确地格式化代码。这一次我已经为你们解决了,但在前面的18个问题之后,你们真的应该自动地去做。请参阅问题文本区域右侧的“如何设置格式”框、上方的[?]和下方的预览(以检查其是否正确)。正如TJ所说,您需要展示如何创建MyList实例以及如何调用各种方法。而且,
this.index
只是
this.arr.length
。Add和AddFilter都是构造函数吗?按照惯例,只有设计为构造函数的函数才应该以大写字母开头。@T.J.Crowder,谢谢您为我设置格式,并感谢您下次提供的提示。@RobG。我在上面添加了如何在MyLIst的实例上创建,Add和AddFilter不是构造函数,(我对js对象是新手,所以我可能会说错话。