Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.06.2016, 19:55
Интересующийся
Отправить личное сообщение для Ариан Посмотреть профиль Найти все сообщения от Ариан
 
Регистрация: 14.01.2015
Сообщений: 28

setTimeout дает наложение скриптов
Доброго здоровьеца (с) Малахов
Из за функции setTimeout 2 скрипта накладываются друг на друга, а именно , каждая функция висит на клике на объект, при клике на {объект 1} используется fadeIn+setTimeout(fadeOut,500)+setTimeout(fadeIn,1 000).

Так вот если кликнуть еще раз через 500 мс на {объект 2}, то запустится еще один такой же скрипт, пока работает этот, они наложатся друг на друга и получается каша, что делать?

Ответить с цитированием
  #2 (permalink)  
Старый 15.06.2016, 20:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Ариан,
а зачем вам setTimeout ? может callback использовать в fadeIn и fadeOut
Ответить с цитированием
  #3 (permalink)  
Старый 15.06.2016, 20:41
Интересующийся
Отправить личное сообщение для Ариан Посмотреть профиль Найти все сообщения от Ариан
 
Регистрация: 14.01.2015
Сообщений: 28

Сообщение от рони Посмотреть сообщение
Ариан,
а зачем вам setTimeout ? может callback использовать в fadeIn и fadeOut
Я использую setTimeout для паузы, а именно
fadeOut1(a,b); // функция анимированного пропадания элемента
setTimeout(removeFadeOut, 500,a); // отчищаются все вспомогательные классы анимаций через 500мс 
setTimeout(slide, 500); // слайд на следующую картинку 
setTimeout(fadeIn1, 500,b);// появление другой инфы на картинке

Возможно такое сделать на колбаке лучше?

Последний раз редактировалось Ариан, 15.06.2016 в 21:04.
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2016, 21:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от Ариан
Возможно такое сделать на колбаке лучше?
да
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2016, 21:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Ариан,
сделайте минимальный макет
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2016, 21:30
Интересующийся
Отправить личное сообщение для Ариан Посмотреть профиль Найти все сообщения от Ариан
 
Регистрация: 14.01.2015
Сообщений: 28

Сообщение от рони Посмотреть сообщение
Ариан,
сделайте минимальный макет
http://codepen.io/Aria-n/pen/VjjPbB


Вот, кое как перенес в кодепен, сделать простой макет будет довольно проблематично думаю, но если этот пример в кодепен будет не понятен я потружусь сделать более простой.

Пока кое как готов только красный блок, на его примере и расскажу об ошибке.

Если нажать на краснй блок то появятся кольца, при нажатии на кольца они исчезают и появляется блок с текстом и красной кнопкой для закрытия, если же нажать на кольцо, которое меняет цвет, а потом нажать сразу же на другое кольцо, то блок с тектом спешит появиться, но что-то тут идет не так и он исчезает.
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2016, 21:35
Интересующийся
Отправить личное сообщение для Ариан Посмотреть профиль Найти все сообщения от Ариан
 
Регистрация: 14.01.2015
Сообщений: 28

Хмммм

я только что понял что фишка не в setTimeout, потому что при некоторых обстоятельствах даже после 5 секунд выдает ошибку


Это крайне странно, ошибка происходит только после нажатия на круг который меняет цвет toggleClass('buyed') в 108 строке, функция вызывается в 140 строке

Последний раз редактировалось Ариан, 15.06.2016 в 21:40.
Ответить с цитированием
  #8 (permalink)  
Старый 15.06.2016, 22:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Ариан,
слишком много классов, может взять какой-то готовый аккардеон - слайдер?
Ответить с цитированием
  #9 (permalink)  
Старый 15.06.2016, 23:42
Интересующийся
Отправить личное сообщение для Ариан Посмотреть профиль Найти все сообщения от Ариан
 
Регистрация: 14.01.2015
Сообщений: 28

Сообщение от рони Посмотреть сообщение
Ариан,
слишком много классов, может взять какой-то готовый аккардеон - слайдер?
http://codepen.io/Aria-n/pen/VjjPbB

вырезал половину, напоминаю что рабочий только красный блок



Тут код каресели маленький, внутри одного блока карусели весь код в основном

Последний раз редактировалось Ариан, 15.06.2016 в 23:45.
Ответить с цитированием
  #10 (permalink)  
Старый 15.06.2016, 23:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Ариан,
мало чем могу помочь, но таймеры по времени никогда не совпадут с временем анимации , если использовать классы то ориентироватся на transitionend или animationend

или все эфекты делать на jquery и тогда callback и stop
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зацикливание функции setTimeout MininAS Общие вопросы Javascript 19 14.10.2015 00:02
Передача контекста через setTimeout decadent jQuery 3 10.02.2011 19:01
setTimeout как он работает??? namo86 Общие вопросы Javascript 16 02.02.2011 09:01
setTimeout в браузере IE и Opera leha66 Javascript под браузер 2 13.12.2010 13:02
Динамическая подзагрузка и исполнение скриптов NT Man Javascript под браузер 2 28.08.2009 12:32