JavaScript对象未定义
我需要一些关于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] +
我使用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对象是新手,所以我可能会说错话。