Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Счетчик заказов в день (https://javascript.ru/forum/misc/76992-schetchik-zakazov-v-den.html)

.A.R.T. 10.03.2019 15:09

Счетчик заказов в день
 
Подскажите пожалуйста, как реализовать простой скрипт, который с начала суток будет рандомно (напр. от 1 до 3) прибавлять цифры каждый час в строку. Например:

Сегодня сделано заказов: 1
Сегодня сделано заказов: 4
Сегодня сделано заказов: 5
Сегодня сделано заказов: 8

И т.д. каждый час меняется цифра.

Russo 10.03.2019 17:59

var interval = 1000*60*60;
var max = 3;
var min = 1;
setInterval(rand, interval);
function rand() {
    let  num = Math.floor(Math.random() * (max - min)) + min;
    let elem = document.createElement('DIV');
    document.body.appendChild(elem);

    elem.innerHTML += 'Сегодня сделано заказов: ' + num + '<br>';

}

Блондинка 11.03.2019 05:26

.A.R.T.,
я конечно дико извиняюсь, но просто интересно - зачем? в настоящее время даже 'блондинок' не обманешь подобным, это сработает только для пенсионеров и дошкольников, которые сегодня первый раз зашли в интернет

.A.R.T. 11.03.2019 15:40

Russo,
я извиняюсь, а как вывести строку в HTML странице? Или прямо напрямую скрипт вставлять (если просто вставить скрипт - ничего не отображается)? Допустим есть строка: <div id="schetchik">Сегодня сделано заказов: ...</div>

.A.R.T. 11.03.2019 15:43

Блондинка,
чтобы дать понять посетителям, что интернет-магазин (доставка суши) работает. Недавно открылся сайт, некоторые посетители звонят и спрашивают, работает интернет-магазин или нет.

Nexus 11.03.2019 16:00

Цитата:

Сообщение от .A.R.T.
Недавно открылся сайт, некоторые посетители звонят и спрашивают, работает интернет-магазин или нет

Что ж это за сайт такой, по которому непонятно жив он или нет? :D
Если с сайтом все хорошо, то вложитесь в рекламу.

Russo 11.03.2019 23:30

Цитата:

Сообщение от .A.R.T. (Сообщение 504601)
Russo,
я извиняюсь, а как вывести строку в HTML странице? Или прямо напрямую скрипт вставлять (если просто вставить скрипт - ничего не отображается)? Допустим есть строка: <div id="schetchik">Сегодня сделано заказов: ...</div>

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

Russo 11.03.2019 23:55

Я думаю в Вашем случае можно сделать так:
<!DOCTYPE html>
<html>
    <head>
        <title>shop</title>
        <meta charset="utf-8">
       
    </head>
    <body>
    <div id="schetchik"></div>
    <script>
      var interval = 1000*60*60;
      var max = 3;
      var min = 1;
      setInterval(rand, interval);
      function rand() {
          let  num = Math.floor(Math.random() * (max - min)) + min;
          let elem = document.createElement('DIV');
          let counter = document.getElementById('schetchik');
          counter.appendChild(elem);

          elem.innerHTML += 'Сегодня сделано заказов: ' + num + '<br>';

      }
    </script>
    </body>
</html>


Хотя правильней вставлять код в js файл.

Malleys 12.03.2019 06:06

Все представленные тут решения почему-то предполагают, что посетитель будет часами сидеть (и зайдёт на страницу ровно в полночь) и смотреть на этот счётчик. (который сбрасывается при обновлении страницы, и показывает информацию сомнительного характера!)

Лучше всего показывать настоящее количество заказов, которое берётся из базы данных, где хранятся эти заказы!

Если это не возможно, то предпочтительней показывать среднее ожидаемое количество заказов на основе количества заказов, которые были сделаны в предыдущие дни. Конечно можно использовать линейный график вида, y = ax + b, где a и b являются некоторыми коэффициентами, характерными для вашего магазина. Но скорей всего у вас в магазине в определённое время совершается больше заказов (я могу ошибаться!), поэтому график вида y = ax + b cos(cx + d) может лучше описывать количество заказов, сделанных к конкретному времени.

Пример для y = ax + b cos(cx + d) с общим кол-вом заказов 60 в день (и набором данных, которые здесь не приводятся)...
<p>Сегодня сделано заказов: <span id="orders-count"></span></p>
<script>
(function orders() {
	var element = document.getElementById("orders-count");
	var t = (Date.now() / 3600 / 1000) % 24;
	element.innerHTML = Math.round(2.42 * t - 5 * Math.cos(.25 * t - 1.7));
	
	setTimeout(orders, 10 * 60 * 1000);
})();
</script>


Для вашего магазина аппроксимация, конечно же, может иметь совершенно другой вид!

Коэффициенты вычисляются по методу наименьших квадратов(https://en.wikipedia.org/wiki/Least_squares) для набора точек (в помощь для нахождения коэффициентов для вашего магазина в соответствии с данными последних дней https://www.desmos.com/calculator)

Такой способ отражает более-менее правдоподобное кол-во заказов. И в результате получается компактная формула, которая не занимает много места.

Конечно вы можете учитывать и такие детали, как день недели или праздник. (Это легко сделать, если у вас имеются конкретные данные)

Хотя такое вычисление намного лучше, чем просто какие-то случайные числа, по возможности стоит написать скрипт, чтобы была возможность показывать настоящее количество заказов!

Цитата:

Сообщение от .A.R.T.
Недавно открылся сайт, некоторые посетители звонят и спрашивают, работает интернет-магазин или нет.

Так может всё дело в ужасном UX?

laimas 12.03.2019 11:32

Цитата:

Сообщение от Malleys
Лучше всего показывать настоящее количество заказов, которое берётся из базы данных, где хранятся эти заказы!

Если это не возможно

То это уже не магазин.


Часовой пояс GMT +3, время: 12:55.