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 определено.

Другие вопросы по тегам