Скрыть / показать Div после нескольких секунд

0

У меня есть Div. Я хотел бы скрыть его через 10 секунд, а затем показать его через 30 секунд, затем скрыть его снова через 10 секунд и так далее.

У меня есть этот код, но он не работает так, как я себе это представлял.

setTimeout(function() { 
    $("#myDiv").hide(); 
    setTimeout(function() {     
            $("#myDiv").show(); 
    },30000);
},10000); 

Любой совет?

  • 0
    Вы проверили идентификатор вашего div?
  • 0
    Вы должны прочитать это: stackoverflow.com/questions/729921/settimeout-or-setinterval
Показать ещё 1 комментарий
Теги:
settimeout

4 ответа

8
Лучший ответ

Просто зациклируйте его, как

function toggleDiv() {
    setTimeout(function () {
        $("#myDiv").hide();
        setTimeout(function () {
            $("#myDiv").show();
            toggleDiv();
        }, 30000);
    }, 10000);
}
toggleDiv();

Демо: скрипка

  • 0
    Я видел твою скрипку, Арун, я сейчас изучаю Javascript, почему мы должны использовать toggleDiv(); когда это работает без вызова этой функции
  • 0
    @ user3004356: toggleDiv - это просто сам код. Это вызывает функцию рекурсивно. Если вы не вызываете его в этом примере, он будет запущен только один раз. Только setInterval вызывает функцию повторно.
Показать ещё 2 комментария
1

Используйте setInterval как,

setInterval(function() { 
    $("#myDiv").hide(); 
    setTimeout(function() {     
        $("#myDiv").show(); 
    },10000);
},30000); 

демонстрация

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

setInterval(function() { 
    $("#myDiv").hide(); 
    setTimeout(function() {     
       $("#myDiv").show(); 
    },3000);
},4000); 

Обновленная демоверсия

  • 2
    интервал будет вызываться каждые 10 секунд ... где для завершения цикла требуется 40 секунд
  • 1
    Это не будет делать то, что вы ожидаете .... посмотрите на ваше время повторения!
Показать ещё 2 комментария
1

Вместо этого используйте setInterval (func, timeout), он будет запускать каждый тайм-аут в миллисекундах, а в func переключать div между видимыми и скрытыми

0

Если вы не возражаете, чтобы начальное состояние было "показано", вы можете сделать это (что, вероятно, предполагал Рохан Кумар):

setInterval(function() { 
    $("#myDiv").show(); 
    setTimeout(function() {     
       $("#myDiv").hide(); 
    },10000);
},40000); 

Таймер повтора устанавливается каждые 40 секунд (общий интервал 30 + 10), а скрытие происходит после фиксированного таймаута 10 секунд.

Существует также библиотека timing которая расширяет анимацию JQuery (чтобы разрешать повторы и т.д.):

http://creativecouple.github.com/jquery-timing/

Тогда ваш код станет чем-то вроде:

$("#myDiv").repeat().wait(10000).show().wait(30000).hide();

JSFiddle: http://jsfiddle.net/TrueBlueAussie/zDV6F/1/

Который я думаю довольно круто.

Если вы не возражаете против дополнительных звонков или не хотите получить дополнительную свободу, пойдите с ответом Аруна Пини.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню