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)

Тапочек 05.11.2022 13:39

Цитата:

Сообщение от voraa (Сообщение 548774)
Что бы день менялся в 00:00:00 по местному времени.

Со скриптом я более-менее разобрался, но открытым остаётся вопрос, как сделать картинку кликабельной. Я так понял, что вот это в коде
<a href=index.htm><img id='pd'></a>

не просто так

рони 05.11.2022 13:50

Тапочек,
наверно надо создать массив href и выбирать также
const href = arr[ind];
document.querySelector("#pd").parentNode.href = href;

Тапочек 05.11.2022 15:22

Цитата:

Сообщение от рони (Сообщение 548781)
Тапочек,
наверно надо создать массив href и выбирать также

Да я и не спорю. Вопрос как? =)
Я вот что-то наваял как смог, код вроде работает, но он кривой до чёртиков. Я не знаю, что, как и куда правильно писать, для меня это магия
<a href=index.htm><img id='pd'>
	<img src="" class="pic">
    
<script>

const picurls = [

'http://00.gif?1',
'http://01.gif?2',
'http://02.gif?3',
'http://03.gif?4',

        	];

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.querySelector(".pic").src = url;


// разделитель

const arr = [

'http://google.com?1',
'http://yahoo.com?2',
'http://yandex.ru?3',
'http://rambler.ru?4',

		];

const href = arr[ind];
document.querySelector("#pd").parentNode.href = href;

</script>

рони 05.11.2022 17:28

Тапочек,
<a href=index.htm id='pd'>
    <img src="" class="pic"></a>
<script>
    const picurls = [{
        src: 'http://00.gif?1',
        href: 'http://google.com?1'
    }, {
        src: 'http://01.gif?2',
        href: 'http://yahoo.com?2'
    }, {
        src: 'http://02.gif?3',
        href: 'http://yandex.ru?3'
    }, {
        src: 'http://03.gif?4',
        href: 'http://rambler.ru?4'
    }];

    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 obj = picurls[ind];

    document.querySelector(".pic").src = obj.src;
    document.querySelector("#pd").href = obj.href;
</script>

Тапочек 05.11.2022 19:03

Цитата:

Сообщение от рони (Сообщение 548783)
рони

А вот теперь огромнейшее спасибо! :victory:

Тапочек 18.11.2022 21:18

Цитата:

Сообщение от Тапочек (Сообщение 548784)
А вот теперь огромнейшее спасибо! :victory:

Рано я порадовался. Скрипт не работает, как его не настраимвай и перенастраивай

voraa 18.11.2022 21:24

Какой именно скрипт и что конкретно не работает?

Тапочек 18.11.2022 21:37

Цитата:

Сообщение от voraa (Сообщение 549054)
Какой именно скрипт и что конкретно не работает?

Последний скрипт от рони. Я заменил адреса картинок, закинул его в файл script.js и подключил к странице. Никакая картинка не отображается, вообще ничего не отображается

voraa 18.11.2022 21:52

Где вызываете этот скрипт? В начале html файла или в конце?
Какие ошибки в консоле?

Если в начеле подключили так, как он написан, то конечно не будет работать. DOM дерева еще нет и
document.querySelector(".pic").src = obj.src;
document.querySelector("#pd").href = obj.href;
вызовут ошибку

Тапочек 18.11.2022 22:22

Цитата:

Сообщение от voraa (Сообщение 549057)
Где вызываете этот скрипт? В начале html файла или в конце?
Какие ошибки в консоле?

Если в начеле подключили так, как он написан, то конечно не будет работать. DOM дерева еще нет и
document.querySelector(".pic").src = obj.src;
document.querySelector("#pd").href = obj.href;
вызовут ошибку

Я не совсем понимаю, как объяснить. Привожу пример. У меня на странице есть небольшой раздел (он не в конце и не в начале, он на своём месте), где должна показываться каждый день новая картинка. Вот есть, например, такой скрипт, но он меняет картинки только 7 раз (по дням недели). Вместо картинок тут приветствия, но не суть важно

<Script Language="JavaScript">
  now = new Date()
  if (now.getDay() == 0)
    document.write("Отдыхайте, завтра рабочий день...")
  if (now.getDay() == 1)
    document.write("Сегодня понедельник - настраивайтесь на работу")
  if (now.getDay() == 2)
    document.write("Уже вторник, понедельник к счастью позади!")
  if (now.getDay() == 3)
    document.write("Половина недели позади - сегодня уже среда")
  if (now.getDay() == 4)
    document.write("Сегодня четверг, скоро выходные...")
  if (now.getDay() == 5)
    document.write("Сегодня пятница - последний рабочий день")
  if (now.getDay() == 6)
    document.write("Сегодня первый день выходных!")
</Script>


Мне нужно, чтобы картинка менялась не 7 раз, а 50. Я попытался его изменить, что бы после ==6 шло ==7, а не опять ==0, но не выходит, он опять начинает "с понедельника"

Вот примерно я такой скрипт и просил, но, по видимому, это уж чересчур сложная задача


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