15.06.2016, 19:55
|
Интересующийся
|
|
Регистрация: 14.01.2015
Сообщений: 28
|
|
setTimeout дает наложение скриптов
Доброго здоровьеца (с) Малахов
Из за функции setTimeout 2 скрипта накладываются друг на друга, а именно , каждая функция висит на клике на объект, при клике на {объект 1} используется fadeIn+setTimeout(fadeOut,500)+setTimeout(fadeIn,1 000).
Так вот если кликнуть еще раз через 500 мс на {объект 2}, то запустится еще один такой же скрипт, пока работает этот, они наложатся друг на друга и получается каша, что делать?
|
|
15.06.2016, 20:19
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,129
|
|
Ариан,
а зачем вам setTimeout ? может callback использовать в fadeIn и fadeOut
|
|
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.
|
|
15.06.2016, 21:01
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,129
|
|
Сообщение от Ариан
|
Возможно такое сделать на колбаке лучше?
|
да
|
|
15.06.2016, 21:03
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,129
|
|
Ариан,
сделайте минимальный макет
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
15.06.2016, 21:30
|
Интересующийся
|
|
Регистрация: 14.01.2015
Сообщений: 28
|
|
Сообщение от рони
|
Ариан,
сделайте минимальный макет
|
http://codepen.io/Aria-n/pen/VjjPbB
Вот, кое как перенес в кодепен, сделать простой макет будет довольно проблематично думаю, но если этот пример в кодепен будет не понятен я потружусь сделать более простой.
Пока кое как готов только красный блок, на его примере и расскажу об ошибке.
Если нажать на краснй блок то появятся кольца, при нажатии на кольца они исчезают и появляется блок с текстом и красной кнопкой для закрытия, если же нажать на кольцо, которое меняет цвет, а потом нажать сразу же на другое кольцо, то блок с тектом спешит появиться, но что-то тут идет не так и он исчезает.
|
|
15.06.2016, 21:35
|
Интересующийся
|
|
Регистрация: 14.01.2015
Сообщений: 28
|
|
Хмммм
я только что понял что фишка не в setTimeout, потому что при некоторых обстоятельствах даже после 5 секунд выдает ошибку
Это крайне странно, ошибка происходит только после нажатия на круг который меняет цвет toggleClass('buyed') в 108 строке, функция вызывается в 140 строке
Последний раз редактировалось Ариан, 15.06.2016 в 21:40.
|
|
15.06.2016, 22:57
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,129
|
|
Ариан,
слишком много классов, может взять какой-то готовый аккардеон - слайдер?
|
|
15.06.2016, 23:42
|
Интересующийся
|
|
Регистрация: 14.01.2015
Сообщений: 28
|
|
Сообщение от рони
|
Ариан,
слишком много классов, может взять какой-то готовый аккардеон - слайдер?
|
http://codepen.io/Aria-n/pen/VjjPbB
вырезал половину, напоминаю что рабочий только красный блок
Тут код каресели маленький, внутри одного блока карусели весь код в основном
Последний раз редактировалось Ариан, 15.06.2016 в 23:45.
|
|
15.06.2016, 23:54
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,129
|
|
Ариан,
мало чем могу помочь, но таймеры по времени никогда не совпадут с временем анимации , если использовать классы то ориентироватся на transitionend или animationend
или все эфекты делать на jquery и тогда callback и stop
|
|
|
|