2011-05-21 2 views
15

Я хочу создать баннер с помощью jQuery. Когда скрипт с загрузкой страницы будет показывать группу фотографий один за другим. Например, контроллер отправляет 10 фотографий, и каждая фотография будет отображаться через 30 секунд после 10 минут, когда сценарий потребует от фотоснимок другого фото.Запуск функции во временном интервале в jQuery

Вопрос: Как я могу сделать функцию, которая работает через 30 секунд. Мне нужно запустить функцию за промежуток времени без нажатия кнопки или чего-либо еще.

+0

https://developer.mozilla.org/en/DOM/window.setTimeout и https://developer.mozilla.org/en/DOM/window.setInterval –

ответ

42

Основной метод:

setInterval(function() { 
     console.log('it works' + new Date()); 
    },30000); 

Если вам нужно очистить интервал в будущем:

var myInterval = setInterval(function() { 
      console.log('it works' + new Date()); 
     },30000); 

в будущем:

clearInterval(myInterval); 
+0

я получаю 'ReferenceError: myInterval не defined' –

+0

@FranciscoCorralesMorales: У меня такая же ошибка. По ошибке я попытался вызвать функцию myInterval со скобками. –

-2

Вы должны использовать setInterval как это

setInterval("alert('Hello')", 5000); 
+1

В качестве первого аргумента настоятельно рекомендуется использовать функцию или закрытие, а не строку. – vog

3

Попробуйте что-то вроде этого:

HTML:

<ul id="ticker"> 
    <li>Image 1</li> 
    <li>Image 2</li> 
    <li>Image 3</li> 
    <li>Image 4</li> 
    <li>Image 5</li> 
</ul>​ 

CSS:

ul{height:20px; overflow:auto}​ 

JS:

var $ticker = $('ul#ticker'); 
var speed = 300; 
var pause = 3000; 

var tick = function() { 
    var first = $ticker.find('li').first().animate({ 
     height: 0 
    }, speed).hide('normal', function() { 
     $(this).remove(); 
     $ticker.append('<li>' + first + '</li>'); 
    }).html(); 
}; 

$('ul#ticker').click(tick); 
setInterval(tick, pause); 

Здесь простой Demo.

Смежные вопросы