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
Лучше всего показывать настоящее количество заказов, которое берётся из базы данных, где хранятся эти заказы!

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

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

Malleys 12.03.2019 15:08

Ваше выдёргивание из контекста, как будто мы тут лотерею отгадываем...

Да, вы правы, это не магазин, когда, почти нет клиентов

laimas 12.03.2019 15:51

Цитата:

Сообщение от Malleys
это не магазин, когда, почти нет клиентов

Не магазин, это когда нет учета и создаются пустышки-обманки, настоящий магазин до такого не опуститься. :)

Malleys 12.03.2019 16:30

Цитата:

Сообщение от laimas
пустышки-обманки

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

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

Вообще-то это по темам экстраполяция, прогноз продаж, а не «пустышки-обманки»

laimas 12.03.2019 16:59

Цитата:

Сообщение от Malleys
вычисляется на основе количества заказов за предыдущий период времени

Значит должна быть база, учет, без всяких "если есть база". Если ее нет, то какая может быть экстраполяция, когда нет магазина, о чем я и написал. )

Блондинка 12.03.2019 21:25

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

Nexus 12.03.2019 21:30

Цитата:

Сообщение от Блондинка
увидев подобное занесла бы этот сайт в ч/с

Я думаю вы бы не поняли, что этот код делает)


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