JavaScript объект не определен
Мне нужна помощь, пожалуйста, с объектом JavaScript. это выглядит так:
Я называю эту функцию addFilter(element)
с HTML-элементом DOM.
Функция выглядит так:
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, и каждый раз, когда меняется слайдер, мне нужно получить родительский элемент этого элемента, который был отправлен addFilter
как я сказал в начале. так что я пытаюсь сделать
var value = filters.arr[0];
но, как я уже сказал, идентификатор не определен.
Может ли кто-нибудь, пожалуйста, помогите мне, просмотрев код, и скажите мне, что не так.
Большое спасибо.
2 ответа
Ваш код очень запутанный, я его совсем не понимаю. Во всяком случае, вы ищете (я думаю):
var value = filters.arr[0].element;
так как вы назначаете ссылку на элемент arr[this.index]
,
Кстати, если вы передаете элемент, то:
$(this).attr('id');
это очень медленный способ сделать:
this.id;
редактировать
Код, который я использовал (где в DOM был div с идентификатором 'd0'):
var filters = new MyList();
AddFilter(document.getElementById('d0'));
alert(filters.arr[0].element);
Вы еще не сказали, где или как вы используете filters.arr[0]
Без которого вам очень сложно помочь.
Предполагая, что ваш код использует его, выглядит примерно так:
AddFilter($("#theElement"));
display(typeof filters.arr[0]);
filters.arr[0].element.css("color", "blue");
Это должно работать; живой пример.
Моя единственная мысль, если 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
определено.