Skip to content

2. Кнопки

Теперь посмотрим, как работать с кнопками. Допустим, что при нажатии кнопок нам надо посмотреть жития святых в 1-го мая 2008 г. и 2-го апреля 2009 г. пример 2.1.

Начальная часть HTML кода такая же как и в предыдущих примерах: имеется ссылка на loadCalendar2r.js, стили и скрипт для всплывающих окон. Для майской кнопки код будет:

<button onclick="loadCalendar2r(5,1,2008,1,1,3,0,0)">Май 1, 2008</button>

Первые три параметра loadCalendar2r это месяц, день и год, т.е. 1 мая 2008. Чертветрый параметер позволяет выводить дату в формате "григорианский/юлианский". Пятый параметер выводит заголовок календаря. Шестой параметер опеределят вывод жизнеописаний святых в отдельных строчках. Седьмой параметер запрещает вывод тропарей и восьмой параметер запрещает вывод Евангельских чтений.

Код для апрельской кнопки:

<button onclick="loadCalendar2r(4,2,2009,1,1,3,0,0)">Апрель 2, 2009</button>

В примере 2.2 мы видим, как сделать кнопку для показа жизнеописаний святых и Евангельских чтений на текущий день. Код кнопки:

<button onclick="todayDate()">Сегодня</button>

При нажатии кнопки вызывается функция todayDate которая аналогична функции из примера 1.2 .

<script type="text/Javascript">
function todayDate() {

var today=new Date();        // Определить текущую дату
var mm=today.getMonth()+1;   // Определить текущий месяц
var dd=today.getDate();      // Определить текущий день
var yy=today.getFullYear();  // Определить текущий год
var dt=1;                    // Выводить дату в формате "григорианский/юлианский"
var hh=1;                    // Выводить заголовок
var ll=1;                    // Выводить жития святых
var tt=0;                    // Запретить тропари
var ss=1;                    // Выводить Евангельские чтения

loadCalendar2r(mm,dd,yy,dt,hh,ll,tt,ss);
}
</script>

Давайте сделаем кнопку "Завтра" пример 2.3. Чтобы ее сделать, нам надо прибавить один день к текущему дню. Для этого мы используем метод getTime(). Метод getTime() возвращает количество миллисекунд с полуночи 1-го января 1970 г. В одном дне у нас 24*60*60*1000 миллисекунд: 24 часа * 60 минут * 60 секунд * 1000 миллисекунд. Завтрашний день, таким образом, будет:

var today=new Date(); // Определить текущую дату
var tomorrow = new Date(today.getTime() + 24*60*60*1000); // Определить завтрашнюю дату

Теперь мы можем написать функцию для вызова Православного календаря на завтрашний день:

function tomorrowDate() {

var today=new Date();            // Определить текущую дату
var tomorrow = new Date(today.getTime() + 24*60*60*1000);   // Определить завтрашнюю дату
var mm=tomorrow.getMonth()+1;    // Определить завтрашний месяц
var dd=tomorrow.getDate();       // Определить завтрашний день
var yy=tomorrow.getFullYear();   // Определить завтрашний год
var dt=1;                        // Выводить дату
var hh=1;                        // Выводить заголовок
var ll=1;                        // Выводить жития святых
var tt=0;                        // Запретить тропари
var ss=1;                        // Выводить Евангельские чтения

loadCalendar2r(mm,dd,yy,dt,hh,ll,tt,ss);
}

На основе примера 2.3 мы можем написать код для кнопки "Следующий день" пример 2.4. Нам надо создать переменную, которая глобальна по отношению к функциям todayDate() и nextdayDate():

var currentDay = new Date();

Затем в конце каждой функции мы присвоим этой переменной значение вычисленного дня. Для todayDate() функции это будет:

currentDay = today;

а для nextdayDate():

currentDay = next;

Окончательный код для nextdayDate():

function nextdayDate() {

var next = new Date(currentDay.getTime() + 24*60*60*1000);   // Определить дату следующего дня
var mm=next.getMonth()+1;    // Определить месяц следующего дня
var dd=next.getDate();       // Определить день следующего дня
var yy=next.getFullYear();   // Определить год следующего дня
var dt=1;                    // Выводить дату
var hh=1;                    // Выводить заголовок
var ll=1;                    // Выводить жития святых
var tt=0;                    // Запретить тропари
var ss=1;                    // Выводить Евангельские чтения

loadCalendar2(mm,dd,yy,dt,hh,ll,tt,ss);

currentDay = next;
}

Функции todayDate() и nextdayDate() содержат одинаковый HTML код. Его можно оптимизировать, как показано в примере 2.5:

<script type="text/Javascript">
var currentDay = new Date(); // Set up current day for today

function callCalendar(x) {
var mm=x.getMonth()+1;   // Определить месяц
var dd=x.getDate();      // Определить день
var yy=x.getFullYear();  // Определить год
var dt=1;                // Выводить дату
var hh=1;                // Выводить заголовок
var ll=3;                // Выводить жития святых
var tt=0;                // Запретить тропари
var ss=1;                // Выводить Евангельские чтения

loadCalendar2r(mm,dd,yy,dt,hh,ll,tt,ss);
}

function todayDate() {
var today=new Date();    // Определить текущую дату
callCalendar(today);
currentDay = today;
}

function nextdayDate() {
var next = new Date(currentDay.getTime() + 24*60*60*1000);  // Определить дату следующего дня
callCalendar(next);
currentDay = next;
}

</script>

Теперь легко сделать кнопку "Предыдущий день". На основе nextdayDate() мы напишем другую функцию previousDate(). В ней необходимо заменить знак + на знак - и имя переменной next на previous:

function previousDate() {
var previous = new Date(currentDay.getTime() - 24*60*60*1000); // Get tomorrow date
callCalendar(previous);
currentDay = previous;
}

Добавим код "Предыдущий день" перед кнопкой "Сегодня":

<button onclick="previousDate()">Previous Day</button>

Результат вы можете посмотреть в примере 2.6 или примере 2.7.