Позвольте мне объяснить, что я пытаюсь сделать.
Я хочу сделать простое поле, которое считает в обратном порядке числа с промежутками, я указываю.
Например, я хотел бы установить его для запуска в 150, и затем я хочу установить его для отбрасывания на 15 каждые 30 секунд.
Действительно ли это возможно с AJAX/Javascript? Если так, кто-то мог указать на меня в правильном направлении?
Действительно ценил бы любую справку на этом сценарии, поиске с помощью Google в течение многих часов теперь!:(
Удачи
Kieran
Обратите внимание на методы setTimeout
или setInterval
, они позволяют выполнять функцию через указанное количество миллисекунд (1000 мс = 1 секунда). Используйте это, чтобы вызвать функцию, которая постоянно отбрасывает число и записывает его в элемент HTML, чтобы пользователь мог его видеть.
это не тестировалось, но я надеюсь, что это укажет вам путь.
var start = 150;
var drop = 15;
var interval = 30;
function countdown(){
document.getElementById('mybox').innerHTML = start;
start-=drop;
window.setTimeout("countdown",interval*1000);
}
countdown();
Для этого вы можете использовать jQuery, см. http://keith-wood.name/countdown.html -> вкладка Обратные вызовы
Имейте в виду, что 30 секунд в моем браузере не обязательно равны 30 секундам в вашем браузере. Это зависит от загруженности браузера. Разница во времени небольшая в течение короткого времени, но может увеличиваться в течение длительного времени. Времена разойдутся. Если время между двумя посетителями не должно быть равным (или почти равным), то такое простое решение должно подойти.
Однажды у нас возникла проблема с внедрением живых часов / обратного отсчета в одном из наших проектов. Мы строим скрипт с javascript, ajax и PHP для синхронизации часов (время сервера было сервером времени).
Вы должны использовать setInterval / clearInterval, который создан для такого рода задач:
function cooldown(element, start, stop, step, delay) {
var current = start;
element.innerHTML = current;
var timer = setInterval(function () {
current -= step;
if(current < stop) current=stop;
element.innerHTML = current;
if(current == stop) clearInterval(timer);
}, delay*1000);
}
Продемонстрировано здесь: http://jsfiddle.net/PCMHn/