Помогите разобраться скрипт для сайта
Добрый день, делаю сайт в котором хочу сделать смену обоев на главной в зависимости от времени года, с некоторым рандомом из галереи.
Вот тут рандом работает, в месяц не отрабатывается, насколько я понял 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> |
shiyri,
document.write(m.getMonth()) красное лишнее |
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]); |
Цитата:
$(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); }); вот так все равно летние и зимние показывает |
Цитата:
А вы чего пытаетесь сделать? |
Делаю сайт для школы, фото весны и осени не особо различаются, и приняли решение сделать только зиму и лето. Я пытаюсь сделать случайное фото из массива зима либо лето в зависимости от текущей даты.
|
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 часов, для Камчатки, у них уже весна, а сервер будучи в Москве все предлагает зиму. Но можно получать изображения и в процессе загрузки страницы, асинхронным запросом. |
Часовой пояс GMT +3, время: 19:08. |