我需要一些帮助,请使用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];
但就像我说它未定义。
任何人都可以通过查看代码来帮助我,并告诉我什么是错的。
非常感谢你。
答案 0 :(得分:0)
你仍然没有说过你使用filters.arr[0]
的地点或方式,如果没有它,你很难帮助你。
假设您使用它的代码看起来像这样:
AddFilter($("#theElement"));
display(typeof filters.arr[0]);
filters.arr[0].element.css("color", "blue");
应该有效; live example
我唯一的想法是AddFilter
和filters
未定义在同一范围内。您在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);