Как реализовать счетчик живого и постоянного номера на сайте
У меня есть клиент, который перерабатывает банки. Мы разрабатываем для них новый веб-сайт, и они хотят, чтобы на их сайте был счетчик "обработанных банок". Начальный номер (так как они некоторое время работали) будет около 50 000 000, а конечного числа нет.
Чтобы получить "скорость обработки", мы можем усреднить количество обработанных банок в год и получить оценку времени, например, "1 банка на 10 секунд". Но как мне реализовать "постоянный" счетчик, чтобы при загрузке / обновлении страницы счетчик не начинал отсчитывать от установленного значения?
Я начинающий с javascript и jQuery, но я понимаю принципы и основы программирования, и я могу прочитать сценарий и выяснить, что происходит. Любые идеи или предложения будут очень признательны.
2 ответа
Возьмите начало этого года:
var start = new Date(2011, 0, 1); // Note the 0!
Подсчитайте, сколько времени прошло:
var elapsed = new Date() - start; // In milliseconds
Допустим, ваша скорость составляет 1 банку за 10 секунд:
var rate = 1 / 10 / 1000; // Cans per millisecond
Подсчитайте, сколько банок было обработано с начала этого года:
var cans = Math.floor(elapsed * rate);
Итак, простая настройка может быть:
var start = new Date(2011, 0, 1);
var rate = 1 / 10 / 1000;
var base = 50000000;
setInterval(function () {
var cans = Math.floor((new Date() - start) * rate) + base;
$("#cans").text(cans); // I hope you're using jQuery
}, 5000); // update every 5 seconds -- pick anything you like; won't affect result
Оптимизация может заключаться в том, чтобы поддерживать интервал обновления в соответствии с известной частотой, но, вероятно, лучше не допускать, чтобы обновления презентации были отделены от информации о скорости.
Я думаю, что я получу текущую эпоху с
var msecs = (new Date()).getTime();
а затем рассчитать количество банок из этого с помощью
var total_number = base_number + (msecs - start_date) / msecs_per_can;