Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2019, 15:09
Новичок на форуме
Отправить личное сообщение для .A.R.T. Посмотреть профиль Найти все сообщения от .A.R.T.
 
Регистрация: 11.02.2019
Сообщений: 6

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

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

И т.д. каждый час меняется цифра.
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2019, 17:59
Интересующийся
Отправить личное сообщение для Russo Посмотреть профиль Найти все сообщения от Russo
 
Регистрация: 26.02.2019
Сообщений: 10

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>';

}
Ответить с цитированием
  #3 (permalink)  
Старый 11.03.2019, 05:26
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

.A.R.T.,
я конечно дико извиняюсь, но просто интересно - зачем? в настоящее время даже 'блондинок' не обманешь подобным, это сработает только для пенсионеров и дошкольников, которые сегодня первый раз зашли в интернет
Ответить с цитированием
  #4 (permalink)  
Старый 11.03.2019, 15:40
Новичок на форуме
Отправить личное сообщение для .A.R.T. Посмотреть профиль Найти все сообщения от .A.R.T.
 
Регистрация: 11.02.2019
Сообщений: 6

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

Последний раз редактировалось .A.R.T., 11.03.2019 в 15:46.
Ответить с цитированием
  #5 (permalink)  
Старый 11.03.2019, 15:43
Новичок на форуме
Отправить личное сообщение для .A.R.T. Посмотреть профиль Найти все сообщения от .A.R.T.
 
Регистрация: 11.02.2019
Сообщений: 6

Блондинка,
чтобы дать понять посетителям, что интернет-магазин (доставка суши) работает. Недавно открылся сайт, некоторые посетители звонят и спрашивают, работает интернет-магазин или нет.
Ответить с цитированием
  #6 (permalink)  
Старый 11.03.2019, 16:00
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,724

Сообщение от .A.R.T.
Недавно открылся сайт, некоторые посетители звонят и спрашивают, работает интернет-магазин или нет
Что ж это за сайт такой, по которому непонятно жив он или нет?
Если с сайтом все хорошо, то вложитесь в рекламу.
Ответить с цитированием
  #7 (permalink)  
Старый 11.03.2019, 23:30
Интересующийся
Отправить личное сообщение для Russo Посмотреть профиль Найти все сообщения от Russo
 
Регистрация: 26.02.2019
Сообщений: 10

Сообщение от .A.R.T. Посмотреть сообщение
Russo,
я извиняюсь, а как вывести строку в HTML странице? Или прямо напрямую скрипт вставлять (если просто вставить скрипт - ничего не отображается)? Допустим есть строка: <div id="schetchik">Сегодня сделано заказов: ...</div>
Вам нужно, чтобы блок дублировался или чтобы каждый час там менялось число?
Ответить с цитированием
  #8 (permalink)  
Старый 11.03.2019, 23:55
Интересующийся
Отправить личное сообщение для Russo Посмотреть профиль Найти все сообщения от Russo
 
Регистрация: 26.02.2019
Сообщений: 10

Я думаю в Вашем случае можно сделать так:
<!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 файл.
Ответить с цитированием
  #9 (permalink)  
Старый 12.03.2019, 06:06
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

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

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

Если это не возможно, то предпочтительней показывать среднее ожидаемое количество заказов на основе количества заказов, которые были сделаны в предыдущие дни. Конечно можно использовать линейный график вида, 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?

Последний раз редактировалось Malleys, 12.03.2019 в 06:10.
Ответить с цитированием
  #10 (permalink)  
Старый 12.03.2019, 11:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

Если это не возможно
То это уже не магазин.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Счетчик обратного времени (эпоха unix) skillful AJAX и COMET 0 07.07.2014 17:09
Найти день недели и день месяца Yaroma11 Элементы интерфейса 1 13.05.2014 11:39
добавить счетчик в счетчик dimon76 Events/DOM/Window 1 28.06.2011 23:06
Помогите усовершенствовать счетчик fredrsf Элементы интерфейса 1 30.06.2010 15:38
Завтра - День программиста! Tony177 Оффтопик 1 13.09.2009 03:57