Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Скрипт "картинка-ссылка" на каждый день недели (https://javascript.ru/forum/dom-window/84633-skript-kartinka-ssylka-na-kazhdyjj-den-nedeli.html)

voraa 04.11.2022 21:58

Цитата:

Сообщение от Тапочек
(сделать псевдорандом - картинки показываются не 1,2,3,4,5... а 3,1,5,4,2 - это не проблема)

Какая разница? Разместите урл картинок в другом порядке.
Требуется ведь, что бы ВСЕ пользователи в какой то день видели одну и ту же определенную картинку. Если каждый пользователь в этот день будет независимо от других считать рандом, то картинки у всех будут разные.
Значит либо строго определенная цикличность, скрипт у каждого пользователя должен вычислять один и тот же номер картинки для данного дня. Либо это должен делать сервер - вычислять номер, для каждого дня разный но одинаковый для всех пользователей.

voraa 04.11.2022 21:59

Цитата:

Сообщение от Тапочек
Только вот вместо картинки нужна картинка-ссылка. Как это сделать?

Что такое картинка ссылка?

voraa 04.11.2022 22:01

Цитата:

Сообщение от Тапочек
А как сделать, чтобы картинка менялась раз неделю, раз в месяц и раз в год? По аналогии с "фото недели" и "фото месяца"

Аналогично. Получать номер недели или номер месяца от начала года.

Тапочек 04.11.2022 22:32

Цитата:

Сообщение от voraa (Сообщение 548765)
Какая разница? Разместите урл картинок в другом порядке.

Да, так и сделаю, в принципе - выход. Я в этой теме не сильно подкован, сами понимаете

Цитата:

Сообщение от voraa (Сообщение 548766)
Что такое картинка ссылка?

<a href=index.htm><img scr="img.jpg"></a>

Примерно так

Цитата:

Сообщение от voraa (Сообщение 548767)
Аналогично. Получать номер недели или номер месяца от начала года.

Я всё равно не понимаю, извините

А скрипт (у меня) не работает, просто пустая страница. Если что - вот код:

<html>
    <head>
<title>Страница</title>
    </head>
<body>
<script>
    const picurls = [
'/images/1.jpg',
'/images/2.jpg',
'/images/3.jpg',

];

const now = Date.now();  // мс с 01.01.1970
const msinday = 1000*60*60*24; // мс в сутках
const nowDay = Math.trunc(now/msinday); // дней с 01.01.1970
 
const ind = nowDay % picurls.length;

const url = picurls[ind];

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

voraa 04.11.2022 22:50

Так я написал только как урл получать.
Откуда же я знаю куда вам надо его запихивать?
Где тот img, куда его надо запихнуть?
Или я всю страницу формироввать должен?

voraa 04.11.2022 22:54

<html>
    <head>
<title>Страница</title>
    </head>
<body>

<a href=index.htm><img id='pd'></a>

<script>
    const picurls = [
'/images/1.jpg',
'/images/2.jpg',
'/images/3.jpg',
 
];
 
const now = Date.now();  // мс с 01.01.1970
const msinday = 1000*60*60*24; // мс в сутках
const nowDay = Math.trunc(now/msinday); // дней с 01.01.1970
  
const ind = nowDay % picurls.length;
 
const url = picurls[ind];

document.getElementById('pd').src = url
 
</script>
  
</body>
</html>

voraa 04.11.2022 22:57

Цитата:

Сообщение от voraa
Аналогично. Получать номер недели или номер месяца от начала года.

Получение номера дня, недели и месяца от 01.01.1970
const picurls = [
    'http://serv/pic1.jpg',
    'http://serv/pic2.jpg',
...
    'http://serv/picN.jpg',
];
 
const now = Date.now();  // мс с 01.01.1970
const msinday = 1000*60*60*24; // мс в сутках
const nDay = Math.trunc(now/msinday); // дней с 01.01.1970

const nWeek = Math.trunc((nDay - 4)/7);  // недель с 01.01.1970 (переключается в понедельник)

const year = new Date (now).getFullYear()
const month = new Date (now).getMonth()
const nMonth = (year - 1970)*12 + month // мeсяцев с 01.01.1970 
 
const indDay = nDay % picurls.length;
const indWeek = nWeek % picurls.length;
const indMonth = nMonth % picurls.length;

рони 04.11.2022 22:58

новая картинка каждый день
 
Тапочек,
<!DOCTYPE html>
<html>

<head>
    <title>Страница</title>
</head>

<body>
    <img src="" class="pic">
    <script>
        const picurls = [ //порядок картинок зависит только от вас, тасуйте как хотите
            'https://picsum.photos/300/100?1',
            'https://picsum.photos/300/100?2',
            'https://picsum.photos/300/100?3',
            'https://picsum.photos/300/100?4',
            'https://picsum.photos/300/100?5',
            'https://picsum.photos/300/100?6',
            'https://picsum.photos/300/100?7'
        ];

        const now = Date.now() -(new Date().getTimezoneOffset()) * 60000;
 // мс с 01.01.1970
        const msinday = 1000 * 60 * 60 * 24; // мс в сутках
        const nowDay = Math.trunc(now / msinday); // дней с 01.01.1970

        const ind = nowDay % picurls.length;

        const url = picurls[ind];
        document.querySelector(".pic").src = url;
    </script>
</body>

</html>

voraa 04.11.2022 23:29

Цитата:

Сообщение от voraa
const now = Date.now();  // мс с 01.01.1970

Вернее будет так
const now = Date.now() -(new Date().getTimezoneOffset()) * 60000;

Что бы день менялся в 00:00:00 по местному времени.

Тапочек 05.11.2022 01:12

Voraa, да, коряво объяснил. Мне нужно, чтобы по клику на картинку открывалась ссылка (на каждую картинку своя ссылка). В вашем скрипте только ссылка на картинку ('http://serv/pic1.jpg'), она не кликабельна, то есть, она не ссылка, а просто картинка

рони, если менять часы системные часы, то вроде ничего не меняется. Хотя наступил новый день и картинка сменилась... Не понимаю, как это происходит 0_0


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