Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   setTimeout дает наложение скриптов (https://javascript.ru/forum/dom-window/63574-settimeout-daet-nalozhenie-skriptov.html)

Ариан 15.06.2016 19:55

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

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


рони 15.06.2016 20:19

Ариан,
а зачем вам setTimeout ? может callback использовать в fadeIn и fadeOut

Ариан 15.06.2016 20:41

Цитата:

Сообщение от рони (Сообщение 419566)
Ариан,
а зачем вам setTimeout ? может callback использовать в fadeIn и fadeOut

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

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

рони 15.06.2016 21:01

Цитата:

Сообщение от Ариан
Возможно такое сделать на колбаке лучше?

да

рони 15.06.2016 21:03

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

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


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Ариан 15.06.2016 21:30

Цитата:

Сообщение от рони (Сообщение 419572)
Ариан,
сделайте минимальный макет

http://codepen.io/Aria-n/pen/VjjPbB


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

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

Если нажать на краснй блок то появятся кольца, при нажатии на кольца они исчезают и появляется блок с текстом и красной кнопкой для закрытия, если же нажать на кольцо, которое меняет цвет, а потом нажать сразу же на другое кольцо, то блок с тектом спешит появиться, но что-то тут идет не так и он исчезает.

Ариан 15.06.2016 21:35

Хмммм

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


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

рони 15.06.2016 22:57

Ариан,
слишком много классов, может взять какой-то готовый аккардеон - слайдер?

Ариан 15.06.2016 23:42

Цитата:

Сообщение от рони (Сообщение 419587)
Ариан,
слишком много классов, может взять какой-то готовый аккардеон - слайдер?

http://codepen.io/Aria-n/pen/VjjPbB

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



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

рони 15.06.2016 23:54

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

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


Часовой пояс GMT +3, время: 23:19.