фамильё
личные страницы
заглавная творю мыслю удивляюсь почта гостевая

заглавная >> раздел мыслю >> сценарий смены картинки в определенный день

Сценарий смены картинки в определенный день.

Однажды, на новый год мне захотелось что бы посетителей сайта встречала праздничная заставка. Но были проблемы. Во-первых мне было лень сразу после окончания торжеств лезть на сайт и менять содержание. Во-вторых, не было уверенности что после праздников я с легкостью смогу проделать эту процедуру. Надо было вставить скрипт. Нужный мне вариант в доступных мне местах не нашел пришлось сочинять самому.
Итак, возможно я повторяю всем известную истину, но зато от всей души.
С начала алгоритм.
Праздники (а именно католическое и православное рождество плюс новый и старый новый год) шли в разные календарные даты, поэтому сценарий делился на две части. По внутреннему содержанию части были однотипны.
Сначала проверялось какой на момент запуска скрипта месяце-год. Дата праздника приходилась либо на один год либо на другой (либо же на декабрь или январь) поэтому я выбрал проверку первого уровня по году.
И тут я сглупил. Всё дело оказалось в том что лень моя оказалась сильнее чем я предполагал. Смена контента страницы произошла не через несколько дней после праздников, а через месяц. Когда я пришёл на сайт, то увидел, как, вполне в соответствии с непродуманным сценарием, всех моих посетителей уже в феврале опять поздравляют с новогодними праздниками.
УМНЫЕ ЛЮДИ! К вам взываю! учитесь на чужих ошибках, не делайте сверку по году делайте по месяцу.
Вернувшись к описанию скрипта.
Следующий шаг, проверка даты по дню. Если совпадает запускается праздничный вариант, если нет - аборт.
Наконец, сам скрипт:

var ar12 = new Array(25, 26, 27, 28, 29, 30, 31); // объявляем массив для декабря
var ar01 = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14); // объявляем массив для января
var toDay = new Date(); // запрашиваем системную дату на момент запуска скрипта
var DaDate = toDay.getDate(); // объявляем переменную со значением дня (число) на момент запуска
var MoDate = toDay.getMonth(); // объявляем переменную со значением месяца (число) на момент запуска

// помните, что Javascript считает с 0, а не с 1

if (document.images)
{
img4 = new Image;
img15 = new Image;
img4.src = "StanWin.gif";
img15.src = "NeYeHo.gif"
// создаем объекты соответствующие gif файлам
}

function chng()
// основная функция
{
if ( MoDate == 11)
// если месяц при включении совпадает с декабрём (11, а не 12 месяц)
{
for ( x = 0; x < 7; x++)
// то совершается цикл проверяющий совпадает ли день с одним из заложенных в цикле дней
{
if (DaDate == ar12[x])
{
document.Otvet.src = img15.src;
// если да, то на экран выводится gif-файл с праздничной картинкой
break; // очень важная штука. Я из-за нее всю ночь просидел тупо глядя в монитор и не понимая почему сценарий не работает, хотя все вроде верно. Объясняю причину.
Цикл проверяет совпадают ли даты (заложенная внутри с датой момента запуска скрипта); если да выводит нужную картинку.
НО если после вывода картинки цикл не остановить он пойдет проверять на совпадение остальные заложенные в него даты. Эти даты соответствующие завтрашнему (и т.д.) дням естественно не совпадут (так как она будет совпадать на другой день). Цикл уберет картинку и оставит все так как будто даты не совпали.
}
else
// если даты не совпали
{
document.Otvet.src = img4.src;
// выводится стандартное сообщение
}
}
}
else
// переход к проверке следующего заложенного в скрипт месяца. Дальше все тоже самое, комментировать уже не буду
{
if ( MoDate == 0 )
{
for ( i = 0; i < 15; i++)
{
if (DaDate == ar01[i])
{
document.Otvet.src = img15.src;
break;
}
else
{
document.Otvet.src = img4.src;
}
}
}
}
}

Всё. Весь скрипт. Объясню только что такое Otvet.
Otvet это то место где выводится поздравительная картинка, или картинка со стандартным сообщением если даты не совпали. В моем сценарии это была картинка внутри ячейки в таблице. То есть:
< table>
< tr>
< td>
< img name="Otvet">
< /td>
< /tr>
< /table>

Теперь точно всё. Возникнут вопросы пишите.


Rambler's Top100 be number one
online dating
HotLog
Рейтинг@Mail.ru

 ©Усов Денис
Hosted by uCoz