Может ли кто-нибудь сказать мне, почему мой оператор IF запускается перед обновлением пользовательского интерфейса с каждым циклом?
Код в основном хочет отложить добавление классов CSS в пользовательский интерфейс, после того как каждый добавлен, перенаправить пользователя. Он сейчас прямо направляет?!
$("#logo").click(function() {
//define variables:
var eventDuration = 500;
var elementArray = ['ribbon', 'left-panel', 'wid-id-1', 'wid-id-2'];
var animationArray = ['slideOutRight', 'slideOutLeft', 'rotateOutUpRight', 'rotateOutUpRight'];
//Loop through elements and update UI with timer function:
$.each(elementArray, function(index, value) {
//Increments the delay of the element updates:
var delaytimer = index * eventDuration + eventDuration;
//Adds animation css classes to onpage elements:
$('#' + value).delay(delaytimer).queue(function() {
$(this).addClass('animated ' + animationArray[index]).dequeue();
});
//Once complete redirect to the home page:
if (index === 3) {
$(this).delay(delaytimer + 500).queue(function() {
window.location.replace('/').dequeue;
});
}
});
});
Оператор if
выполняется немедленно, потому что он не находится внутри функции задержки. Попробуйте переместить его туда.
$('#' + value).delay(delaytimer).queue(function() {
$(this).addClass('animated ' + animationArray[index]).dequeue();
//Once complete redirect to the home page:
if (index === 3) {
$(this).delay(delaytimer + 500).queue(function() {
window.location.replace('/').dequeue;
});
}
});
console.log(delaytimeer)
и проверить рассчитанное значение. Поместите это ниже этой строкиvar delaytimer = index * eventDuration + eventDuration;
и разместите здесь