Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.10.2012, 12:37
Интересующийся
Отправить личное сообщение для IDCh Посмотреть профиль Найти все сообщения от IDCh
 
Регистрация: 28.08.2012
Сообщений: 12

Создание своей библиотеки. Создание двух одинаковых объектов. Как избежать?
Я делаю свою библиотеку для работы с css свойствами и dom элементами и столкнулся с проблемой при работе с функцией для изменения параметра (в моем случае тестирую с opacity).

Функция у меня

function  _i(id) {
                        this.flowInterval = null;
                        this.flowProperty = null;
                        this.flowValue = null;
                        this.flowwhereTo = null;
                        this.flowObject = null;
                        this.flowType = null;
                        this.objects = [];
                        this.instance = null;
                       
                    }


Я убрал условия и распределение по селекторам, чтобы не нагружать код.
Как вы видите, у меня есть массив objects. Именно в него загружаются все выбранные элементы и с ним работают методы прототипа.

Так вот, я столкнулся с тем, что даже, к примеру, для

_i('#one').flow('opacity', '0');
_i('#one').flow('opacity', '1');

Создается два разных объекта _i

То есть, в теории метод flow очищает все переменные, что указаны в функции _i

(т.е.)
this.flowInterval = null;
                        this.flowProperty = null;
                        this.flowValue = null;
                        this.flowwhereTo = null;
                        this.flowObject = null;
                        this.flowType = null;
                        this.objects = [];
                        this.instance = null;

и задает им новые параметры.
Суть метода flow в изменении параметра, к примеру opacity.
В теории все в порядке.
На практике внезапно оказывается, что у меня два разных объекта
_i('#one'), и оба они разрывают элемент с id="one" на две стороны и на выходе - мерцающий до бесконечности элемент.

По моему, я не совсем корректно понимаю создание и принцип работы библиотек, да? Если я не ошибаюсь, функция _i должна возвращать(!) выбранный(ые) элемент(ы), а не просто назначать их в массив, да?

Зачем я создал массив, в который через push() забиваются новые элементы? Чтобы иметь возможность выбирать несколько (к примеру с одинаковым классом) объектов и после через цикл прогонять их по методам (к примеру изменение css свойств)

На практике у меня костыль на костыле костылем погоняет. Именно в этом методе, с другими вариант с массивом работает вполне нормально.

Если нужны подробности метода flow и внутренности _i, могу запостить.
Ответить с цитированием
  #2 (permalink)  
Старый 30.10.2012, 13:40
Интересующийся
Отправить личное сообщение для IDCh Посмотреть профиль Найти все сообщения от IDCh
 
Регистрация: 28.08.2012
Сообщений: 12

Вот выхлоп в консоли, который я сделал, чтобы вы поняли, о чем я.

Как вы видите выше, у каждого экземпляра _i есть instance
Это для присваивания имени, так сказать. В данном случае я создал эту переменную для теста. И на выхлопе получаю это:

Код:
Вот instance: В плюс test.html:266
Нынешнее значение: 0.37340693867535324 test.html:295
opacity 1   test.html:264

Вот instance: В плюс test.html:266
Нынешнее значение: 0.4734069386753532 test.html:295
opacity 0  - test.html:264

Вот instance: В минус test.html:266
Нынешнее значение: 0.4260662448078179 test.html:295
opacity 0  - test.html:264
И оно повторяется. Т.е. свойство opacity у объекта разрывается двумя функциями с setInterval.

Плюс и минус плюс и минус.
И мерцает.
Ответить с цитированием
  #3 (permalink)  
Старый 31.10.2012, 10:53
Интересующийся
Отправить личное сообщение для IDCh Посмотреть профиль Найти все сообщения от IDCh
 
Регистрация: 28.08.2012
Сообщений: 12

Для тех, кто будет испытывать те же затруднения.
Вполне нормальный вариант создать глобальный объект и в него уже записывать интервалы. После искать их и удалять.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти точки соприкосновения двух объектов в RaphaelJS Fatalityap Библиотеки/Тулкиты/Фреймворки 3 03.08.2012 15:33