JavaScript объект не определен - PullRequest
0 голосов
/ 21 июня 2011

Мне нужна помощь, пожалуйста, с объектом 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];

но, как я сказал, это id не определено.

Может ли кто-нибудь помочь мне, просмотрев код, и скажите, что случилось.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 21 июня 2011

Ваш код очень запутанный, я его совсем не понимаю.В любом случае, вы ищете (я думаю):

var value = filters.arr[0].element;

, поскольку вы присваиваете ссылку на элемент arr[this.index].

Кстати, если вы передаете элемент, то:

$(this).attr('id');

- это очень медленный способ:

this.id;

Редактировать

Код, который я использовал (где был DIV с идентификатором 'd0' в DOM):

var filters = new MyList();
AddFilter(document.getElementById('d0'));

alert(filters.arr[0].element);
0 голосов
/ 21 июня 2011

Вы до сих пор не сказали, где и как вы используете 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.

...