У меня есть Div. Я хотел бы скрыть его через 10 секунд, а затем показать его через 30 секунд, затем скрыть его снова через 10 секунд и так далее.
У меня есть этот код, но он не работает так, как я себе это представлял.
setTimeout(function() {
$("#myDiv").hide();
setTimeout(function() {
$("#myDiv").show();
},30000);
},10000);
Любой совет?
Просто зациклируйте его, как
function toggleDiv() {
setTimeout(function () {
$("#myDiv").hide();
setTimeout(function () {
$("#myDiv").show();
toggleDiv();
}, 30000);
}, 10000);
}
toggleDiv();
Демо: скрипка
toggleDiv();
когда это работает без вызова этой функции
toggleDiv
- это просто сам код. Это вызывает функцию рекурсивно. Если вы не вызываете его в этом примере, он будет запущен только один раз. Только setInterval вызывает функцию повторно.
Используйте setInterval
как,
setInterval(function() {
$("#myDiv").hide();
setTimeout(function() {
$("#myDiv").show();
},10000);
},30000);
Вы можете установить время соответственно, как для своей проблемы, попробуйте,
setInterval(function() {
$("#myDiv").hide();
setTimeout(function() {
$("#myDiv").show();
},3000);
},4000);
Вместо этого используйте setInterval (func, timeout), он будет запускать каждый тайм-аут в миллисекундах, а в func переключать div между видимыми и скрытыми
Если вы не возражаете, чтобы начальное состояние было "показано", вы можете сделать это (что, вероятно, предполагал Рохан Кумар):
setInterval(function() {
$("#myDiv").show();
setTimeout(function() {
$("#myDiv").hide();
},10000);
},40000);
Таймер повтора устанавливается каждые 40 секунд (общий интервал 30 + 10), а скрытие происходит после фиксированного таймаута 10 секунд.
Существует также библиотека timing
которая расширяет анимацию JQuery (чтобы разрешать повторы и т.д.):
Тогда ваш код станет чем-то вроде:
$("#myDiv").repeat().wait(10000).show().wait(30000).hide();
Который я думаю довольно круто.
Если вы не возражаете против дополнительных звонков или не хотите получить дополнительную свободу, пойдите с ответом Аруна Пини.