Как реализовать счетчик живого и постоянного номера на сайте

У меня есть клиент, который перерабатывает банки. Мы разрабатываем для них новый веб-сайт, и они хотят, чтобы на их сайте был счетчик "обработанных банок". Начальный номер (так как они некоторое время работали) будет около 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

http://jsfiddle.net/eKDXB/

Оптимизация может заключаться в том, чтобы поддерживать интервал обновления в соответствии с известной частотой, но, вероятно, лучше не допускать, чтобы обновления презентации были отделены от информации о скорости.

Я думаю, что я получу текущую эпоху с

var msecs = (new Date()).getTime();

а затем рассчитать количество банок из этого с помощью

var total_number = base_number + (msecs - start_date) / msecs_per_can;
Другие вопросы по тегам