Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.02.2020, 13:41
Новичок на форуме
Отправить личное сообщение для shiyri Посмотреть профиль Найти все сообщения от shiyri
 
Регистрация: 04.02.2020
Сообщений: 4

Помогите разобраться скрипт для сайта
Добрый день, делаю сайт в котором хочу сделать смену обоев на главной в зависимости от времени года, с некоторым рандомом из галереи.
Вот тут рандом работает, в месяц не отрабатывается, насколько я понял
m.getMonth() возвращает число месяца, причем январь это 0.
и насколько я еще понял время берется от времени устройства с, которого загрущается сайт.


<script type="text/javascript">
$(document).ready(function() {
var m=new Date();
document.write(m.getMonth());
var bgArray = ['1.jpg', '2.jpg','3.jpg'];
var bgArrayz = ['4.jpg','5.jpg','6.jpg'];
if (3 < document.write(m.getMonth()) < 10) {
var bg = bgArray[Math.floor(Math.random() * bgArray.length)];
} else {
var bg = bgArrayz[Math.floor(Math.random() * bgArrayz.length)];
}

$('moving-home').css('background', bg);

// If you have defined a path for the images
var path = 'panoram/';

// then you can put it right before the variable 'bg'
$('moving-home').css('background', path+bg);

});
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 04.02.2020, 14:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

shiyri,
document.write(m.getMonth())
красное лишнее
Ответить с цитированием
  #3 (permalink)  
Старый 04.02.2020, 14:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

shiyri, а разве это время года? Определить время года по месяцу, это, для JS, добавить к номеру месяца 1, затем это разделить на 3, затем разделить по модулю 4. Полученное значение от 0 до 3 и будет указывать на время года: 0 - зима, 1 - весна, 2 - лето, 3 - осень.

let season_image = 'name1.jpg name2.jpg name3.jpg name4.jpg'.split(' '),
    season = Math.floor((new Date().getMonth()+1) / 3) % 4;
    
alert(season_image[season]);

Последний раз редактировалось laimas, 04.02.2020 в 15:25.
Ответить с цитированием
  #4 (permalink)  
Старый 04.02.2020, 16:03
Новичок на форуме
Отправить личное сообщение для shiyri Посмотреть профиль Найти все сообщения от shiyri
 
Регистрация: 04.02.2020
Сообщений: 4

Сообщение от рони Посмотреть сообщение
shiyri,
document.write(m.getMonth())
красное лишнее
$(document).ready(function() {
	var m=new Date();	
    var bgArray = ['1.jpg', '2.jpg','3.jpg'];
	var bgArrayz = ['4.jpg','5.jpg','6.jpg'];
	if (3 < m.getMonth() < 10) {
	 var bg = bgArray[Math.floor(Math.random() * bgArray.length)];
	}  else {
	var bg = bgArrayz[Math.floor(Math.random() * bgArrayz.length)];
	}
    
    $('moving-home').css('background', bg);

    // If you have defined a path for the images
    var path = 'panoram/';

    // then you can put it right before the variable 'bg'
    $('moving-home').css('background', path+bg);

});

вот так все равно летние и зимние показывает
Ответить с цитированием
  #5 (permalink)  
Старый 05.02.2020, 07:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от shiyri
вот так все равно летние и зимние показывает
Вы чего хотите получить, картинку случайную для времени года? Тогда то что вы упорно пытаетесь делать не имеет отношения к этому. Во-первых, время года, это три месяца, квартал, и какой из месяцев принадлежит тому или иному времени года нужно узнавать так как показано выше. Во-вторых, иметь четыре массива изображений для каждого из времен года, которые поместить в общий массив. То есть, полученное время года, это будет индекс этого массива, который будет указывать на вложенный в него массив изображений для времени года. Затем получив длину массива изображений времени года (ибо они могут иметь разные размеры), сформировать случайное число от 0 до длина массива минус 1. И только потом по этим индексам (время года и случайное число) извлечь изображение.

А вы чего пытаетесь сделать?
Ответить с цитированием
  #6 (permalink)  
Старый 08.02.2020, 19:23
Новичок на форуме
Отправить личное сообщение для shiyri Посмотреть профиль Найти все сообщения от shiyri
 
Регистрация: 04.02.2020
Сообщений: 4

Делаю сайт для школы, фото весны и осени не особо различаются, и приняли решение сделать только зиму и лето. Я пытаюсь сделать случайное фото из массива зима либо лето в зависимости от текущей даты.
Ответить с цитированием
  #7 (permalink)  
Старый 08.02.2020, 22:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

shiyri, тут надо еще думать как сделать. Например, если при каждом неком событии на открытой странице сайта или по таймеру нужно менять случайно изображение текущего времени года, тогда есть резон это делать на клиенте посредством javascript. В этом случае на клиент нужно передавать массив изображений, но только текущего времени года, изображения всех времен года отдавать ему нет смысла.

Другими словами, еще сервер должен определить что отдавать клиенту. Пусть как написано выше, изображение меняется на странице многократно и будем отдавать клиенту массив. У сервера при этом есть три варианта получения массива изображений:

1) Изображения (их имена и пути к ним) описаны в базе соответственно времени года, то есть одно поле в таблице, это идентификатор времени года (только начиная не с 0, а с 1 - зима, 2 - весна, 3 - лето, 4 - осень). В этом случае запрос к базе по id определенным по текущему времени года вернет изображения как массив, который после json кодирования размещается в тег script.

2) Изображения лежат в каталогах с именами по названию времен года. По определенному времени года, из массива описывающего имена каталогов, выбирается каталог текущего времени года, а из него считываются изображения и помещаются в массив как и в случае 1).

3) Все изображения находятся в одном каталоге, но имеют имена как название времени года плюс нумерация или только номера, где первое/последнее число, это индекс времени года (0 - 4), а через дефис - обычная нумерация, могут быть и имена.

Если на сервере РНР, тогда:

Для случая 1):

//определить время года - это для всех вариантов
$season = date('n') / 3 % 4;
//запрос в базу, пример для mysqli
$q = $mysqli->query('SELECT image FROM season_images WHERE season=' . ($season + 1));
//полученный ответ как массив
$ims = json_encode($q->fetch_all(MYSQLI_NUM));


А на странице где формируется html код ее вставка в тег sript:

<script>var ims=<?=$ims?></script>


Для случая 2):

//каталоги времен года с изображениями
$seasons = ['winter', 'spring', 'summer', 'autumn'];
//определить время года
$season = date('n') / 3 % 4;
//получить изображения каталога
$ims = glob('path/'.$seasons[$season].'/*');


Для случая 3):

Предположим, что имена в одном каталоге хранятся как хххххх-0.jpg, ... хххххх-3.jpg, где x любое количество любых символов.

//определить время года
$season = date('n') / 3 % 4;
//получить изображения времени года
$ims = glob('path/*{-'.$season.'}*', GLOB_BRACE);


Если одно случайное изображение на каждой странице, то серверу можно его сразу и отдать, перемешав массив и выбран из него первое:

//перемешать массив полученных изображений времени года
shuffle($ims);
//взять первое
$img = $ims[0];


Но, для России, к примеру, может быть расхождение макс. в 8 часов, для Камчатки, у них уже весна, а сервер будучи в Москве все предлагает зиму. Но можно получать изображения и в процессе загрузки страницы, асинхронным запросом.

Последний раз редактировалось laimas, 09.02.2020 в 01:29.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно создать в скрипт для сайта (бота) Klo_n222_11 Javascript под браузер 1 13.06.2016 01:20
ПОМОГИТЕ РАЗОБРАТЬСЯ КАК РАБОТАЕТ ЭТОТ СКРИПТ! mikhail apalaev Элементы интерфейса 15 03.12.2015 13:23
Скрипт расчета % (помогите разобраться) vitalique Общие вопросы Javascript 2 26.07.2015 14:55
AJAX динамическая подгрузка страниц и скрипт для поисковой оптимизации сайта gumapumba AJAX и COMET 0 17.12.2013 12:46
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55