Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как сделать переменную? (https://javascript.ru/forum/misc/78930-kak-sdelat-peremennuyu.html)

Блондинка 08.12.2019 03:07

Можно решить по другому, вот код второго блока, а в первом блоке можно просто присвоить дисплей ноне всем элементам с классом grig, и заменить фразу Православная пасха на Пасха

<div class="grig>
        Католическая пасха<br>
        <span class="grig">
        <span id="Catholic_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span id="Catholic_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
        </div>
        <div>
        Православная пасха<br> // В первом блоке заменить на Пасха
        <span class="grig">
        <span id="Orthodox_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span id="Orthodox_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
        </div>
        <div>
        Радуница<br>
        <span class="grig">
        <span id="Orthodox_Radunitsa_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span id="Orthodox_Radunitsa_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
        </div>
        <div>
        Вербное воскресенье<br>
        <span class="grig">
        <span id="palm_Sunday_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span id="palm_Sunday_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
        </div>
        <div>
        Масленица<br>
        <span class="grig">
        <span id="Maslenitsa_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span id="Maslenitsa_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
        </div>


другими словами этот код разместить для периода 326-4099, но добавив что если период 326-1582 то скрыть все элементы с классом grig, и заменить фразу 'Православная пасха' на слово 'Пасха'.

Malleys 08.12.2019 12:55

Цитата:

Сообщение от laimas
И форматируйте код свой, чай вы же не главы из ветхого завета выставляете, а не форматированный код очень сложно читать.

А вот здесь хотелось бы узнать, почему вдруг неожиданно к определённому тексту нельзя применять форматирование?

Цитата:

Сообщение от laimas
if (year >= 300 && year <= 499) razn = 1;
    else if (year >= 500 && year <= 599) razn = 2;
    else if (year >= 600 && year <= 699) razn = 3;
    else if (year >= 700 && year <= 899) razn = 4;
    else if (year >= 900 && year <= 999) razn = 5;
    else if (year >= 1000 && year <= 1099) razn = 6;
    else if (year >= 1100 && year <= 1299) razn = 7;
    else if (year >= 1300 && year <= 1399) razn = 8;
    else if (year >= 1400 && year <= 1499) razn = 9;
    else if (year >= 1500 && year <= 1699) razn = 10;
    else if (year >= 1700 && year <= 1799) razn = 11;
    else if (year >= 1800 && year <= 1899) razn = 12;
    else if (year >= 1900 && year <= 2099) razn = 13;
    else if (year >= 2100 && year <= 2199) razn = 14;
    else if (year >= 2200 && year <= 2299) razn = 15;
    else if (year >= 2300 && year <= 2399) razn = 16;
    else if (year >= 2500 && year <= 2599) razn = 17;
    else if (year >= 2600 && year <= 2699) razn = 18;
    else if (year >= 2700 && year <= 2899) razn = 19;
    else if (year >= 2900 && year <= 2999) razn = 20;
    else if (year >= 3000 && year <= 3099) razn = 21;
    else if (year >= 3100 && year <= 3299) razn = 22;
    else if (year >= 3300 && year <= 3399) razn = 23;
    else if (year >= 3400 && year <= 3499) razn = 24;
    else if (year >= 3500 && year <= 3699) razn = 25;
    else if (year >= 3700 && year <= 3799) razn = 26;
    else if (year >= 3800 && year <= 3899) razn = 27;
    else if (year >= 3900 && year <= 4099) razn = 28;

Вам кажется и математику использовать нельзя? Этот кусок можно заменить на...
razn = - 2 + Math.floor(year / 100) - Math.floor(year / 400);


Цитата:

Сообщение от Блондинка
P. S. а в ветхом завете я понимаю ещё меньше чем в яваскрипт...

laimas разбирается в этом не более вас, а то всё противоречит сам себе!

Цитата:

Сообщение от laimas
Из ветхого:

И что вдруг потянуло на ветхие русские слова? Сейчас в русском языке для этого есть слово — старый. Но то, что вы скопировали, никакого отношения к понятию старый не имеет. Это называется — Псалмы, Пророки и Закон, или более кратко — Писания, а если нужно уточнить — Еврейские Писания.

laimas 08.12.2019 15:31

Цитата:

Сообщение от Malleys
И что вдруг потянуло на ветхие русские слова?

Послать? Я вяжу.

laimas 08.12.2019 17:40

Цитата:

Сообщение от Блондинка
Можно решить по другому

Все можно, но вот как понять это:

document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(catholicDate(year)); // во втором
document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(date0_1); // во втором


если

var date0_1 = catholicDate(year);
    document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(date0_1);
 
    var date1_1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + razn);
    document.getElementById("Orthodox_Easter_gr").innerHTML = formatDate(date1_1);


Зачем тогда сначала получается catholicDate(year), помещается в "Catholic_Easter_gr", затем из этой даты формируется новая, с коррекцией дня на razn, и затем опять помещается в "Catholic_Easter_gr"? Если бы этот объект был в двух блоках и первое действо было для первого блока, а второе для второго, тогда бы еще можно было понять, иначе я не понимаю.

Блондинка 09.12.2019 07:52

Цитата:

Сообщение от laimas (Сообщение 517054)
Все можно, но вот как понять это:

document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(catholicDate(year)); // во втором
document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(date0_1); // во втором


если

var date0_1 = catholicDate(year);
    document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(date0_1);
 
    var date1_1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + razn);
    document.getElementById("Orthodox_Easter_gr").innerHTML = formatDate(date1_1);


Зачем тогда сначала получается catholicDate(year), помещается в "Catholic_Easter_gr", затем из этой даты формируется новая, с коррекцией дня на razn, и затем опять помещается в "Catholic_Easter_gr"? Если бы этот объект был в двух блоках и первое действо было для первого блока, а второе для второго, тогда бы еще можно было понять, иначе я не понимаю.

Я объясняла, что с моими 'знаниями' в яваскрипт, у меня получилось только так

Цитата:

Сообщение от laimas (Сообщение 516918)
Очень понятно. )

document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(catholicDate(year));

а здесь, еще раз просто catholicDate(year)

var date0_1 = catholicDate(year);

и

document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(date0_1);

Почему, что есть что здесь не понять.

у меня просто по другому не получилось получить Catholic_Easter_ul

laimas 09.12.2019 08:47

Блондинка, я правда не понимаю чего вы хотите. По коду явно что-то лишнее и чтобы это стало понятно все можно представить так - у вас есть шкатулка (в коде это document.getElementById("Catholic_Easter_gr")), в которую можно поместить только одну пуговицу. И вот что вы делаете:

1) Вы берете пуговицу (catholicDate(year)), пусть это будет белая (date0_1), и кладете в шкатулку (innerHTML).

2) Затем вы хотите эту же пуговицу покрасить в черный цвет (new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + razn)), после как черную (date1_1) положить тоже в шкатулку.

Но по условию в шкатулку можно поместить только одну пуговицу. Вопрос - какую же пуговицу вы хотите положить в шкатулку, белую или черную?

А я, сторонний наблюдатель этого, могу только гадать: а) дама явно не понимает чего хочет; б) дама понимает чего хочет, но запамятовала, что у нее одна шкатулка; в) у дамы две шкатулки, но она забыла достать вторую с полки; г) ... ?

Блондинка 09.12.2019 11:18

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

Блондинка 09.12.2019 11:35

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

laimas 09.12.2019 12:19

В общем после кучи всяких условий и "хочу", вот так, как последнее, но не с ID, ибо это дубликаты, а значит уйдет не тому кому адресовано, а с классами. Далее проверяйте сами так или нет, но это все ваше, изменяйте, переставляйте ...

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div.box-range > div, .input { width: 70%; border: 1px solid #a9a9a9; border-radius: 12px/9px; padding: 10px 25px; margin: 0 20px 5px 0; }
span.ulian { color: hsl(240,100%,70%); }
span.grig { color: hsl(240,100%,30%); }
input { display: inline-block; text-align: center; }
</style>
</head>
<body>

<div class="input">
    <input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
    <input id="button1" type="button" value="Расcчитать" />
</div>

<div class="box-range" range="[0,325]">
    <div>Первый Никейский собор — собор Церкви, созванный императором Константином I; состоялся в июне 325 года в городе Никее (ныне Изник, Турция); 
        продолжался больше двух месяцев и стал первым Вселенским собором в истории христианства.<br>
        Введите год с 326 по 4099
    </div>
</div>

<div class="box-range" range="[326,1582]">
    <div>
        Пасха<br>
        <span class="ulian">
        <span class="Orthodox_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="ulian">
        <span class="Orthodox_Radunitsa_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="ulian">
        <span class="palm_Sunday_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="ulian">
        <span class="Maslenitsa_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[1583,4099]">
    <div>
        Католическая пасха<br>
        <span class="grig">
        <span class="Catholic_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Catholic_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Православная пасха<br>
        <span class="grig">
        <span class="Orthodox_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Orthodox_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="grig">
        <span class="Orthodox_Radunitsa_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Orthodox_Radunitsa_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="grig">
        <span class="palm_Sunday_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="palm_Sunday_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="grig">
        <span class="Maslenitsa_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Maslenitsa_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[4100,0]">
    <div>Введите год с 326 по 4099</div>
</div>

<script>
var inputY = document.getElementById("YearEntry");
    
inputY.value = new Date().getFullYear();
    
inputY.addEventListener("keyup", function() {
    this.value = this.value.replace(/\D/, '');
    showBox();
});
    
inputY.addEventListener("change", showBox);
    
document.getElementById("button1").addEventListener("click", getEaster);

showBox();
getEaster();

function catholicDate(year) {
    // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
    // Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
    var a = year % 19,
        b = year % 4,
        c = year % 7,
        k = Math.floor(year / 100),
        p = Math.floor((13 + 8 * k) / 25),
        q = Math.floor(k / 4),
        m = (15 - p + k - q) % 30,
        n = (4 + k - q) % 7,
        d = (19 * a + m) % 30,
        e = (2 * b + 4 * c + 6 * d + n) % 7;
    
    if (d === 29 && e === 6) return new Date(year, 3, 19);
    if (d === 28 && e === 6 && ((11 * m + 11) % 30 < 19)) return new Date(year, 3, 18);
    if (d + e > 9) return new Date(year, 3, d + e - 9);
    else return new Date(year, 2, 22 + d + e);
}

function orthodoxDate(year) {
    // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
    var a = year % 19,
        b = year % 4,
        c = year % 7,
        d = (19 * a + 15) % 30,
        e = (2 * b + 4 * c + 6 * d + 6) % 7,
        f = d + e;
    // (по старому стилю) Если f ≤ 9, то Пасха будет праздноваться 22 + f марта; если f > 9, то Пасха будет праздноваться f — 9 апреля.
    return f <= 9 ? new Date(year, 2, 22 + f) : new Date(year, 3, f - 9);
}

// Все даты отображаем в едином формате
function formatDate(date) {
    return date.toLocaleDateString("ru", { weekday: "long", day: "numeric", month: "long", year: "numeric" }).replace(/^.?|,/g, function(v, i) {
        return !i ? v.toUpperCase() : '<br>'
    });
}

function showBox() {
    var Y = +inputY.value || 0, 
        box = document.querySelectorAll(".box-range"), 
        i, range, a;
    
    for(i=0; i<box.length; ++i) {
        range = JSON.parse(box[i].getAttribute('range')); 
        a = [];
        if(range[0]) a.push(Y >= range[0]);
        if(range[1]) a.push(Y <= range[1]);
        box[i].hidden = !eval(a.join('&&'))
    }
}

function getEaster() {
    var year = inputY.value, 
        razn = 0, //какое-то значение по умолчанию если меньше 300 и больше 4099
        box = document.querySelectorAll(".box-range"),
        dt, easter = {}, i, k;
        
    if (year >= 300 && year <= 499) razn = 1;
    else if (year >= 500 && year <= 599) razn = 2;
    else if (year >= 600 && year <= 699) razn = 3;
    else if (year >= 700 && year <= 899) razn = 4;
    else if (year >= 900 && year <= 999) razn = 5;
    else if (year >= 1000 && year <= 1099) razn = 6;
    else if (year >= 1100 && year <= 1299) razn = 7;
    else if (year >= 1300 && year <= 1399) razn = 8;
    else if (year >= 1400 && year <= 1499) razn = 9;
    else if (year >= 1500 && year <= 1699) razn = 10;
    else if (year >= 1700 && year <= 1799) razn = 11;
    else if (year >= 1800 && year <= 1899) razn = 12;
    else if (year >= 1900 && year <= 2099) razn = 13;
    else if (year >= 2100 && year <= 2199) razn = 14;
    else if (year >= 2200 && year <= 2299) razn = 15;
    else if (year >= 2300 && year <= 2399) razn = 16;
    else if (year >= 2500 && year <= 2599) razn = 17;
    else if (year >= 2600 && year <= 2699) razn = 18;
    else if (year >= 2700 && year <= 2899) razn = 19;
    else if (year >= 2900 && year <= 2999) razn = 20;
    else if (year >= 3000 && year <= 3099) razn = 21;
    else if (year >= 3100 && year <= 3299) razn = 22;
    else if (year >= 3300 && year <= 3399) razn = 23;
    else if (year >= 3400 && year <= 3499) razn = 24;
    else if (year >= 3500 && year <= 3699) razn = 25;
    else if (year >= 3700 && year <= 3799) razn = 26;
    else if (year >= 3800 && year <= 3899) razn = 27;
    else if (year >= 3900 && year <= 4099) razn = 28;

    dt = catholicDate(year);
    
    easter.Catholic_Easter_gr = formatDate(dt);
    
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - razn);
    
    easter.Catholic_Easter_ul = formatDate(dt);
    
    dt = orthodoxDate(year); //date1
    
    easter.Orthodox_Easter_ul = formatDate(dt); 
    
    easter.Orthodox_Radunitsa_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    
    easter.palm_Sunday_Orthodox_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    
    easter.Maslenitsa_Orthodox_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + razn); //date1_1
    
    easter.Orthodox_Easter_gr = formatDate(dt);
    
    easter.Orthodox_Radunitsa_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    
    easter.palm_Sunday_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    
    easter.Maslenitsa_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    
    
    for(i=0; i<box.length; ++i) {
        if(!box[i].hidden) {
            razn = box[i].querySelectorAll(".ulian");
            for(k=0; k<razn.length; ++k) {
                dt = razn[k].querySelector("span");
                dt.innerHTML = easter[dt.className];
            }
        }
    }
}
</script>
</body>
</html>

Блондинка 09.12.2019 12:54

все даты по григорианскому календарю не отображаются, а по юлианскому отображаются

Блондинка 09.12.2019 13:10

И до 1582 тоже не отображаются по юлианскому календарю

laimas 09.12.2019 13:12

Цитата:

Сообщение от Блондинка
все даты по григорианскому календарю не отображаются, а по юлианскому отображаются

Кнопка "Расcчитать" для чего? Вы же просили показывать/скрывать по условию и надо полагать потому, что для каких то значений какие даты рассчитываются не корректно, значит не показывать. Поэтому выбирайте - либо после выбора даты нажать кнопку, либо отображать не корректные и получать нормальное нажатием кнопки, либо выбрасывайте кнопку и производите расчет автоматически при смене даты в поле ввода.

Блондинка 09.12.2019 15:05

показывать скрывать не некоректные даты а несуществующие, до 15.10.1582г. не было нового стиля и соответственно нельзя рассчитать даты, кнопка рассчитать для меня роли не играет, можно оставить можно убрать...

Блондинка 09.12.2019 15:14

под словом 'неотображается' я подразумевал что спан показывается а строки с компонентами даты нет - пустое место...

laimas 09.12.2019 15:29

Цитата:

Сообщение от Блондинка
И до 1582 тоже не отображаются по юлианскому календарю

Чего тут не отображается?

Блондинка 09.12.2019 18:16

http://cactus.lark.ru/img/Screenshot...9-18-05-43.png

http://cactus.lark.ru/img/Screenshot...9-18-03-28.png

laimas 09.12.2019 21:52

Блондинка, что картинками обмениваться? Кнопку нажмите после ввода 1581. А что касается второй картинки, то да, просмотрел, что есть еще grig.

Коли охота чтобы блоки показывались при определенных условиях, то зачем кнопка? Убрана.

Но если условие для первого блока <= 325, то почему

if (year >= 300 && year <= 499) razn = 1;

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div.box-range > div, .input { width: 70%; border: 1px solid #a9a9a9; border-radius: 12px/9px; padding: 10px 25px; margin: 0 20px 5px 0; }
span.ulian { color: hsl(240,100%,70%); }
span.grig { color: hsl(240,100%,30%); }
input { display: inline-block; text-align: center; }
</style>
</head>
<body>

<div class="input">
    <input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
    <!--<input id="button1" type="button" value="Расcчитать" />-->
</div>

<div class="box-range" range="[0,325]">
    <div>Первый Никейский собор — собор Церкви, созванный императором Константином I; состоялся в июне 325 года в городе Никее (ныне Изник, Турция); 
        продолжался больше двух месяцев и стал первым Вселенским собором в истории христианства.<br>
        Введите год с 326 по 4099
    </div>
</div>

<div class="box-range" range="[326,1582]">
    <div>
        Пасха<br>
        <span class="ulian">
        <span class="Orthodox_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="ulian">
        <span class="Orthodox_Radunitsa_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="ulian">
        <span class="palm_Sunday_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="ulian">
        <span class="Maslenitsa_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[1583,4099]">
    <div>
        Католическая пасха<br>
        <span class="grig">
        <span class="Catholic_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Catholic_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Православная пасха<br>
        <span class="grig">
        <span class="Orthodox_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Orthodox_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="grig">
        <span class="Orthodox_Radunitsa_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Orthodox_Radunitsa_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="grig">
        <span class="palm_Sunday_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="palm_Sunday_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="grig">
        <span class="Maslenitsa_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Maslenitsa_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[4100,0]">
    <div>Введите год с 326 по 4099</div>
</div>

<script>
var inputY = document.getElementById("YearEntry");
    
inputY.value = new Date().getFullYear();
    
inputY.addEventListener("keyup", function() {
    this.value = this.value.replace(/\D/, '');
    showBox();
});
    
inputY.addEventListener("change", showBox);
    
//document.getElementById("button1").addEventListener("click", getEaster);

showBox();
//getEaster();

function catholicDate(year) {
    // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
    // Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
    var a = year % 19,
        b = year % 4,
        c = year % 7,
        k = Math.floor(year / 100),
        p = Math.floor((13 + 8 * k) / 25),
        q = Math.floor(k / 4),
        m = (15 - p + k - q) % 30,
        n = (4 + k - q) % 7,
        d = (19 * a + m) % 30,
        e = (2 * b + 4 * c + 6 * d + n) % 7;
    
    if (d === 29 && e === 6) return new Date(year, 3, 19);
    if (d === 28 && e === 6 && ((11 * m + 11) % 30 < 19)) return new Date(year, 3, 18);
    if (d + e > 9) return new Date(year, 3, d + e - 9);
    else return new Date(year, 2, 22 + d + e);
}

function orthodoxDate(year) {
    // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
    var a = year % 19,
        b = year % 4,
        c = year % 7,
        d = (19 * a + 15) % 30,
        e = (2 * b + 4 * c + 6 * d + 6) % 7,
        f = d + e;
    // (по старому стилю) Если f ≤ 9, то Пасха будет праздноваться 22 + f марта; если f > 9, то Пасха будет праздноваться f — 9 апреля.
    return f <= 9 ? new Date(year, 2, 22 + f) : new Date(year, 3, f - 9);
}

// Все даты отображаем в едином формате
function formatDate(date) {
    return date.toLocaleDateString("ru", { weekday: "long", day: "numeric", month: "long", year: "numeric" }).replace(/^.?|,/g, function(v, i) {
        return !i ? v.toUpperCase() : '<br>'
    });
}

function showBox() {
    var Y = +inputY.value || 0, 
        box = document.querySelectorAll(".box-range"), 
        i, range, a;
    
    for(i=0; i<box.length; ++i) {
        range = JSON.parse(box[i].getAttribute('range')); 
        a = [];
        if(range[0]) a.push(Y >= range[0]);
        if(range[1]) a.push(Y <= range[1]);
        box[i].hidden = !eval(a.join('&&'))
    }
    
    if(Y > 325 && Y < 4100) getEaster();
}

function getEaster() {
    var year = inputY.value, 
        razn = 0, //какое-то значение по умолчанию если меньше 300 и больше 4099
        box = document.querySelectorAll(".box-range"),
        dt, easter = {}, i, k;
        
    if (year >= 300 && year <= 499) razn = 1;
    else if (year >= 500 && year <= 599) razn = 2;
    else if (year >= 600 && year <= 699) razn = 3;
    else if (year >= 700 && year <= 899) razn = 4;
    else if (year >= 900 && year <= 999) razn = 5;
    else if (year >= 1000 && year <= 1099) razn = 6;
    else if (year >= 1100 && year <= 1299) razn = 7;
    else if (year >= 1300 && year <= 1399) razn = 8;
    else if (year >= 1400 && year <= 1499) razn = 9;
    else if (year >= 1500 && year <= 1699) razn = 10;
    else if (year >= 1700 && year <= 1799) razn = 11;
    else if (year >= 1800 && year <= 1899) razn = 12;
    else if (year >= 1900 && year <= 2099) razn = 13;
    else if (year >= 2100 && year <= 2199) razn = 14;
    else if (year >= 2200 && year <= 2299) razn = 15;
    else if (year >= 2300 && year <= 2399) razn = 16;
    else if (year >= 2500 && year <= 2599) razn = 17;
    else if (year >= 2600 && year <= 2699) razn = 18;
    else if (year >= 2700 && year <= 2899) razn = 19;
    else if (year >= 2900 && year <= 2999) razn = 20;
    else if (year >= 3000 && year <= 3099) razn = 21;
    else if (year >= 3100 && year <= 3299) razn = 22;
    else if (year >= 3300 && year <= 3399) razn = 23;
    else if (year >= 3400 && year <= 3499) razn = 24;
    else if (year >= 3500 && year <= 3699) razn = 25;
    else if (year >= 3700 && year <= 3799) razn = 26;
    else if (year >= 3800 && year <= 3899) razn = 27;
    else if (year >= 3900 && year <= 4099) razn = 28;

    dt = catholicDate(year);
    
    easter.Catholic_Easter_gr = formatDate(dt);
    
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - razn);
    
    easter.Catholic_Easter_ul = formatDate(dt);
    
    dt = orthodoxDate(year); //date1
    
    easter.Orthodox_Easter_ul = formatDate(dt); 
    
    easter.Orthodox_Radunitsa_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    
    easter.palm_Sunday_Orthodox_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    
    easter.Maslenitsa_Orthodox_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + razn); //date1_1
    
    easter.Orthodox_Easter_gr = formatDate(dt);
    
    easter.Orthodox_Radunitsa_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    
    easter.palm_Sunday_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    
    easter.Maslenitsa_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    
    
    for(i=0; i<box.length; ++i) {
        if(!box[i].hidden) {
            razn = box[i].querySelectorAll("div > span");
            for(k=0; k<razn.length; ++k) {
                dt = razn[k].querySelector("span");
                dt.innerHTML = easter[dt.className];
            }
            break
        }
    }
}
</script>
</body>
</html>

Блондинка 10.12.2019 07:34

вот сейчас работает,

просто копировала из википедии чему равна разница в разные периоды времени, можно заменить 300 на 326

Блондинка 10.12.2019 07:48

осталось разобраться, как скопировать дни недели из дат по григорианскому календарю, и в датах по юлианскому календарю заменить дни недели...

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div.box-range > div, .input { width: 70%; border: 1px solid #a9a9a9; border-radius: 12px/9px; padding: 10px 25px; margin: 0 20px 5px 0; }
span.ulian { color: hsl(240,100%,70%); }
span.grig { color: hsl(240,100%,30%); }
input { display: inline-block; text-align: center; }
</style>
</head>
<body>

<div class="input">
    <input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
    <!--<input id="button1" type="button" value="Расcчитать" />-->
</div>

<div class="box-range" range="[0,325]">
    <div>Первый Никейский собор — собор Церкви, созванный императором Константином I; состоялся в июне 325 года в городе Никее (ныне Изник, Турция); 
        продолжался больше двух месяцев и стал первым Вселенским собором в истории христианства.<br>
        Введите год с 326 по 4099
    </div>
</div>

<div class="box-range" range="[326,1582]">
    <div>
        Пасха<br>
        <span class="ulian">
        <span class="Orthodox_Easter_ul_day"></span><br> /* день недели равен Orthodox_Easter_gr */
        <span class="Orthodox_Easter_ul"></span><br> /* показать только число месяц год, а день недели из предыдущей строки */
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="ulian">
        <span class="Orthodox_Radunitsa_ul_day"></span><br> /* день недели равен Orthodox_Radunitsa_gr */
        <span class="Orthodox_Radunitsa_ul"></span><br> /* показать только число месяц год, а день недели из предыдущей строки */
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="ulian">
        <span class="palm_Sunday_Orthodox_ul_day"></span><br> /* день недели равен palm_Sunday_Orthodox_gr */
        <span class="palm_Sunday_Orthodox_ul"></span><br> /* показать только число месяц год, а день недели из предыдущей строки */
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="ulian">
        <span class="Maslenitsa_Orthodox_ul_day"></span><br> /* день недели равен Maslenitsa_Orthodox_gr */
        <span class="Maslenitsa_Orthodox_ul"></span><br> /* показать только число месяц год, а день недели из предыдущей строки */
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[1583,4099]">
    <div>
        Католическая пасха<br>
        <span class="grig">
        <span class="Catholic_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Catholic_Easter_ul_day"></span><br> /* день недели равен Catholic_Easter_gr */
        <span class="Catholic_Easter_ul"></span><br> /* показать только число месяц год, а день недели из предыдущей строки */
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Православная пасха<br>
        <span class="grig">
        <span class="Orthodox_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Orthodox_Easter_ul_day"></span><br> /* день недели равен Orthodox_Easter_gr */
        <span class="Orthodox_Easter_ul"></span><br> /* показать только число месяц год, а день недели из предыдущей строки */
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="grig">
        <span class="Orthodox_Radunitsa_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Orthodox_Radunitsa_ul_day"></span><br> /* день недели равен Orthodox_Radunitsa_gr */
        <span class="Orthodox_Radunitsa_ul"></span><br> /* показать только число месяц год, а день недели из предыдущей строки */
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="grig">
        <span class="palm_Sunday_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="palm_Sunday_Orthodox_ul_day"></span><br> /* день недели равен palm_Sunday_Orthodox_gr */
        <span class="palm_Sunday_Orthodox_ul"></span><br> /* показать только число месяц год, а день недели из предыдущей строки */
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="grig">
        <span class="Maslenitsa_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Maslenitsa_Orthodox_ul_day"></span><br> /* день недели равен Maslenitsa_Orthodox_gr */
        <span class="Maslenitsa_Orthodox_ul"></span><br> /* показать только число месяц год, а день недели из предыдущей строки */
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[4100,0]">
    <div>Введите год с 326 по 4099</div>
</div>

laimas 10.12.2019 09:25

Либо конвертор дат тупой, либо условия не верные, но это какой-то кошмар если возникают такие условия.

Блондинка 10.12.2019 10:09

laimas,
в википедии сказано что после четверга 4 октября 1582 г. по старому стилю согласно указу ГригорияVIII наступила пятница 15 октября, другими словами дни недели совпадают в обоих календарях, а числа отличаются на то количество дней чему равна разница в скрипте, поскольку в яваскрипт нету старого стиля, приходится так извращаться все числа правильные, а дни недели в юлианских датах не правильные, надо или скопировать дни недели из григ дат, или исправлять, день недели плюс razn делить на 7 получать остаток и вставлять правильный день недели, но мне думается что нет смысла сначала к числу прибавить разницу а потом туже разницу отнимать от дня недели, (или отнимать а потом прибавлять) проще взять день недели из григ дат

laimas 10.12.2019 10:31

Я и вики не буду смотреть, я эту краткую информацию могу почерпнуть и из РНР функции easter_days():

Дата Пасхального дня была введена Консулом Никеи в 325 году до н.э. Это первое воскресенье, следующее за первым полнолунием после весеннего равноденствия. Днем весеннего равноденствия принято считать 21 марта, так что расчет дня Пасхи сводится к определению даты полнолуния и следующего за ней воскресенья. Используемый здесь алгоритм введен Дионисием Малым в 532 году. В Юлианском летоисчислении (до 1753 года) для отслеживания фаз луны использовался простой 19-летний цикл. В Грегорианском календаре (годы после 1753 - разработан Христофором Клавиусом и Алоизием Лилиусом и введен Папой Григорием XIII в октябре 1582г., а в Великобритании и ее колониях в сентябре 1752г.) было добавлено 2 поправочных коэффициента увеличивающих точность расчета дат.

Эта функция, как и другие, входит в РНР расширение Календарь, которое позволяет переводить даты из одного исчисления в другое, а именно: нынешнее, юлианское, григорианское, иудейское, французское республиканское. В нем просто получить пасху любого исчисления, скорректировать дату и т.п. То есть, если я запрашиваю нечто и пусть это нечто требует корректировки, то я могу быть уверен, что получу необходимое. У вас же получается так: рассчитали даты, расставили их по полкам, а потом бегаем по этим полкам вниз, чтобы взять что-то для помещения на верхние полки. Следовательно расчет/коррекция дат изначально не верно.

Блондинка 10.12.2019 12:02

laimas,
рассчёт дат верный, это уже проверено сравнивая даты из разных достоверных источников, но в алгоритме гаусса ничего не говорится про рассчёт дня недели но в яваскрипт нету у объекта дата юлианского летоисчесления, можно конечно использовать функции для конвертирования дат, но мне кажется проще взять день недели из григ дат если результат будет одинаковым, зачем добавлять кучу кода если можно обойтись уже тем что есть с одинаковым результатом

laimas 10.12.2019 12:18

Блондинка, ваше последнее условие, это получить дату одного исчисления, а день недели вообще другого. Я не понимаю как это можно считать правильным. Мне некогда и если честно, то и не охота разбираться с этим. Вы же сами не можете, закажите работу, у кого есть время и желание, сделает. Ибо по уму делать нужно все не так.

Блондинка 10.12.2019 13:47

Цитата:

Сообщение от laimas (Сообщение 517234)
Блондинка, ваше последнее условие, это получить дату одного исчисления, а день недели вообще другого...

Вот так всегда, когда осталось это последнее условие...

laimas 10.12.2019 13:56

Цитата:

Сообщение от Блондинка
Вот так всегда, когда осталось это последнее условие...

Я не понимаю, почему рассчитав дату по илюанскому исчислению день недели для нее нужно брать по григорианскому.

Блондинка 11.12.2019 11:38

laimas,
просто потому что дата по юлианскому календарю равна день недели, число минус razn, месяц, год григорианскому календарю

laimas 11.12.2019 11:53

Блондинка, вы же не станете день недели сегодняшней даты получать из даты какого либо месяца следующего года. Такие условия

<span class="Orthodox_Easter_ul_day"></span><br> /* день недели равен Orthodox_Easter_gr */
<span class="Orthodox_Easter_ul"></span><br> /* показать только число месяц год, а день недели из предыдущей строки */

вытягивают мои извилины в струну и они не работают.

Блондинка 11.12.2019 12:25

laimas,
с помощью яваскрипт реально сделать то что написано выше? меня вполне устраивает такая 'правильность' расчётов, можешь просто сделать что я прошу, чтобы закрыть вопрос с этим калькулятором...

laimas 11.12.2019 12:29

Цитата:

Сообщение от Блондинка
с помощью яваскрипт реально сделать то что написано выше?

Ранее же вы просили как получать даты - полный формат, краткий формат, только день недели. Я вам писал как это можно делать. А далее запрашивайте нужное и подставляйте куда вам надо. А я не буду голову ломать почему и что во что, по крайней мере в течении этой недели.

Блондинка 11.12.2019 18:42

laimas,
как в твоём 97 посте добавить ид'ы? указала в коментариях

dt = catholicDate(year);
    
    easter.Catholic_Easter_gr = formatDate(dt); //как сюда добавить ид Catholic_Easter_ul_day
    
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - razn);
    
    easter.Catholic_Easter_ul = formatDate(dt);
    
    dt = orthodoxDate(year); //date1
    
    easter.Orthodox_Easter_ul = formatDate(dt);
    
    easter.Orthodox_Radunitsa_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    
    easter.palm_Sunday_Orthodox_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    
    easter.Maslenitsa_Orthodox_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + razn); //date1_1
    
    easter.Orthodox_Easter_gr = formatDate(dt); //как сюда добавить ид Orthodox_Easter_ul_day
    
    easter.Orthodox_Radunitsa_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9)); //как сюда добавить ид Orthodox_Radunitsa_ul_day
    
    easter.palm_Sunday_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7)); //как сюда добавить ид palm_Sunday_Orthodox_ul_day
    
    easter.Maslenitsa_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49)); //как сюда добавить ид Maslenitsa_Orthodox_ul_day

laimas 11.12.2019 20:34

Функцию formatDate() переписать так:

// Все даты отображаем в едином формате
function formatDate(date, opt='long') {
    var options = {
        long:  { weekday: "long", day: "numeric", month: "long", year: "numeric" },
        short: { day: "numeric", month: "long", year: "numeric" },
        week: { weekday: "long"} 
    };    
    return date.toLocaleDateString("ru", options[opt]).replace(/^.?|,/g, function(v, i) {
        return !i ? v.toUpperCase() : '<br>'
    });
}


А далее, запоминать дату ХХХХХХХ_gr, из которой надо брать день недели и далее:

easter.Catholic_Easter_gr = formatDate(dt); //здесь надо полагать полная дата

затем получаем день недели для Catholic_Easter_ul_day и пишем его в объект

easter.Catholic_Easter_ul_day = formatDate(dt, 'week');

затем для Catholic_Easter_ul короткий формат (без дня недели) + день недели

easter.Catholic_Easter_ul = formatDate(dt, 'short') + '<br>' + formatDate(dt, 'week');

А dt это дата из чего получаем и в данном случае это какой-то кошмар, но вы же знаете что из чего, формируйте.

Блондинка 12.12.2019 17:05

laimas,
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div.box-range > div, .input { width: 70%; border: 1px solid #a9a9a9; border-radius: 12px/9px; padding: 10px 25px; margin: 0 20px 5px 0; }
span.ulian { color: hsl(240,100%,70%); }
span.grig { color: hsl(240,100%,30%); }
input { display: inline-block; text-align: center; }
</style>
</head>
<body>

<div class="input">
    <input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
    <!--<input id="button1" type="button" value="Расcчитать" />-->
</div>

<div class="box-range" range="[0,325]">
    <div>Первый Никейский собор — собор Церкви, созванный императором Константином I; состоялся в июне 325 года в городе Никее (ныне Изник, Турция); 
        продолжался больше двух месяцев и стал первым Вселенским собором в истории христианства.<br>
        Введите год с 326 по 4099
    </div>
</div>

<div class="box-range" range="[326,1582]">
    <div>
        Пасха<br>
        <span class="ulian">
        <span class="Orthodox_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="ulian">
        <span class="Orthodox_Radunitsa_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="ulian">
        <span class="palm_Sunday_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="ulian">
        <span class="Maslenitsa_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[1583,4099]">
    <div>
        Католическая пасха<br>
        <span class="grig">
        <span class="Catholic_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Catholic_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Православная пасха<br>
        <span class="grig">
        <span class="Orthodox_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Orthodox_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="grig">
        <span class="Orthodox_Radunitsa_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Orthodox_Radunitsa_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="grig">
        <span class="palm_Sunday_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="palm_Sunday_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="grig">
        <span class="Maslenitsa_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Maslenitsa_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[4100,0]">
    <div>Введите год с 326 по 4099</div>
</div>

<script>
var inputY = document.getElementById("YearEntry");
    
inputY.value = new Date().getFullYear();
    
inputY.addEventListener("keyup", function() {
    this.value = this.value.replace(/\D/, '');
    showBox();
});
    
inputY.addEventListener("change", showBox);
    
//document.getElementById("button1").addEventListener("click", getEaster);

showBox();
//getEaster();

function catholicDate(year) {
    // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
    // Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
    var a = year % 19,
        b = year % 4,
        c = year % 7,
        k = Math.floor(year / 100),
        p = Math.floor((13 + 8 * k) / 25),
        q = Math.floor(k / 4),
        m = (15 - p + k - q) % 30,
        n = (4 + k - q) % 7,
        d = (19 * a + m) % 30,
        e = (2 * b + 4 * c + 6 * d + n) % 7;
    
    if (d === 29 && e === 6) return new Date(year, 3, 19);
    if (d === 28 && e === 6 && ((11 * m + 11) % 30 < 19)) return new Date(year, 3, 18);
    if (d + e > 9) return new Date(year, 3, d + e - 9);
    else return new Date(year, 2, 22 + d + e);
}

function orthodoxDate(year) {
    // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
    var a = year % 19,
        b = year % 4,
        c = year % 7,
        d = (19 * a + 15) % 30,
        e = (2 * b + 4 * c + 6 * d + 6) % 7,
        f = d + e;
    // (по старому стилю) Если f ≤ 9, то Пасха будет праздноваться 22 + f марта; если f > 9, то Пасха будет праздноваться f — 9 апреля.
    return f <= 9 ? new Date(year, 2, 22 + f) : new Date(year, 3, f - 9);
}

// Все даты отображаем в едином формате
function formatDate(date, opt='long') {
    var options = {
        long:  { weekday: "long", day: "numeric", month: "long", year: "numeric" },
        short: { day: "numeric", month: "long", year: "numeric" },
        week: { weekday: "long"} 
    };    
    return date.toLocaleDateString("ru", options[opt]).replace(/^.?|,/g, function(v, i) {
        return !i ? v.toUpperCase() : '<br>'
    });
}

function showBox() {
    var Y = +inputY.value || 0, 
        box = document.querySelectorAll(".box-range"), 
        i, range, a;
    
    for(i=0; i<box.length; ++i) {
        range = JSON.parse(box[i].getAttribute('range')); 
        a = [];
        if(range[0]) a.push(Y >= range[0]);
        if(range[1]) a.push(Y <= range[1]);
        box[i].hidden = !eval(a.join('&&'))
    }
    
    if(Y > 325 && Y < 4100) getEaster();
}

function getEaster() {
    var year = inputY.value, 
        razn = 0, //какое-то значение по умолчанию если меньше 300 и больше 4099
        box = document.querySelectorAll(".box-range"),
        dt, easter = {}, i, k;
        
    if (year >= 300 && year <= 499) razn = 1;
    else if (year >= 500 && year <= 599) razn = 2;
    else if (year >= 600 && year <= 699) razn = 3;
    else if (year >= 700 && year <= 899) razn = 4;
    else if (year >= 900 && year <= 999) razn = 5;
    else if (year >= 1000 && year <= 1099) razn = 6;
    else if (year >= 1100 && year <= 1299) razn = 7;
    else if (year >= 1300 && year <= 1399) razn = 8;
    else if (year >= 1400 && year <= 1499) razn = 9;
    else if (year >= 1500 && year <= 1699) razn = 10;
    else if (year >= 1700 && year <= 1799) razn = 11;
    else if (year >= 1800 && year <= 1899) razn = 12;
    else if (year >= 1900 && year <= 2099) razn = 13;
    else if (year >= 2100 && year <= 2199) razn = 14;
    else if (year >= 2200 && year <= 2299) razn = 15;
    else if (year >= 2300 && year <= 2399) razn = 16;
    else if (year >= 2500 && year <= 2599) razn = 17;
    else if (year >= 2600 && year <= 2699) razn = 18;
    else if (year >= 2700 && year <= 2899) razn = 19;
    else if (year >= 2900 && year <= 2999) razn = 20;
    else if (year >= 3000 && year <= 3099) razn = 21;
    else if (year >= 3100 && year <= 3299) razn = 22;
    else if (year >= 3300 && year <= 3399) razn = 23;
    else if (year >= 3400 && year <= 3499) razn = 24;
    else if (year >= 3500 && year <= 3699) razn = 25;
    else if (year >= 3700 && year <= 3799) razn = 26;
    else if (year >= 3800 && year <= 3899) razn = 27;
    else if (year >= 3900 && year <= 4099) razn = 28;

    dt = catholicDate(year);
    
    easter.Catholic_Easter_gr = formatDate(dt);
    
    easter.Catholic_Easter_ul_day =  formatDate(dt, 'week');
    
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - razn);
    
    easter.Catholic_Easter_ul = formatDate(dt, 'week') + '<br>' + formatDate(dt, 'short');
    
    dt = orthodoxDate(year); //date1
    
    easter.Orthodox_Easter_ul = formatDate(dt); 
    
    easter.Orthodox_Radunitsa_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    
    easter.palm_Sunday_Orthodox_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    
    easter.Maslenitsa_Orthodox_ul = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + razn); //date1_1
    
    easter.Orthodox_Easter_gr = formatDate(dt);
    
    easter.Orthodox_Easter_ul_day =  formatDate(dt, 'week');
    
    easter.Orthodox_Radunitsa_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    
    easter.Orthodox_Radunitsa_ul_day =  formatDate(dt, 'week');
    
    easter.palm_Sunday_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    
    easter.palm_Sunday_Orthodox_ul_day =  formatDate(dt, 'week');
    
    easter.Maslenitsa_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    
    easter.Maslenitsa_Orthodox_ul_day =  formatDate(dt, 'week');
    
    for(i=0; i<box.length; ++i) {
        if(!box[i].hidden) {
            razn = box[i].querySelectorAll("div > span");
            for(k=0; k<razn.length; ++k) {
                dt = razn[k].querySelector("span");
                dt.innerHTML = easter[dt.className];
            }
            break
        }
    }
}
</script>
</body>
</html>

Блондинка 12.12.2019 17:08

а как правильно в 245-249 строках, где отнимаются несколько дней от пасхи?

laimas 12.12.2019 18:21

Точно также как в строке 239, ведь они различаются только тем, что первым аргументом не ранее полученная дата передается, а получается:

ранее полученный день недели + '<br>' + formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9), 'short');

Если при этом "ранее полученный день недели" получен и помещен в объект easter, значит подставляйте его. Если нет и требуется расчет, добавьте переменную week в строке 200 и оперируйте ей, еще нужны промежуточные вычисления, определяйте для них переменную, и т.п.

Блондинка 13.12.2019 07:31

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div.box-range > div, .input { width: 70%; border: 1px solid #a9a9a9; border-radius: 12px/9px; padding: 10px 25px; margin: 0 20px 5px 0; }
span.ulian { color: hsl(240,100%,70%); }
span.grig { color: hsl(240,100%,30%); }
input { display: inline-block; text-align: center; }
</style>
</head>
<body>

<div class="input">
    <input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
    <!--<input id="button1" type="button" value="Расcчитать" />-->
</div>

<div class="box-range" range="[0,325]">
    <div>Первый Никейский собор — собор Церкви, созванный императором Константином I; состоялся в июне 325 года в городе Никее (ныне Изник, Турция); 
        продолжался больше двух месяцев и стал первым Вселенским собором в истории христианства.<br>
        Введите год с 326 по 4099
    </div>
</div>

<div class="box-range" range="[326,1582]">
    <div>
        Пасха<br>
        <span class="ulian">
        <span class="Orthodox_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="ulian">
        <span class="Orthodox_Radunitsa_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="ulian">
        <span class="palm_Sunday_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="ulian">
        <span class="Maslenitsa_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[1583,4099]">
    <div>
        Католическая пасха<br>
        <span class="grig">
        <span class="Catholic_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Catholic_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Православная пасха<br>
        <span class="grig">
        <span class="Orthodox_Easter_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Orthodox_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="grig">
        <span class="Orthodox_Radunitsa_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Orthodox_Radunitsa_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="grig">
        <span class="palm_Sunday_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="palm_Sunday_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="grig">
        <span class="Maslenitsa_Orthodox_gr"></span><br>
        по григорианскому календарю (новый стиль)<br>
        </span>
        <span class="ulian">
        <span class="Maslenitsa_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[4100,0]">
    <div>Введите год с 326 по 4099</div>
</div>

<script>
var inputY = document.getElementById("YearEntry");
    
inputY.value = new Date().getFullYear();
    
inputY.addEventListener("keyup", function() {
    this.value = this.value.replace(/\D/, '');
    showBox();
});
    
inputY.addEventListener("change", showBox);
    
//document.getElementById("button1").addEventListener("click", getEaster);

showBox();
//getEaster();

function catholicDate(year) {
    // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
    // Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
    var a = year % 19,
        b = year % 4,
        c = year % 7,
        k = Math.floor(year / 100),
        p = Math.floor((13 + 8 * k) / 25),
        q = Math.floor(k / 4),
        m = (15 - p + k - q) % 30,
        n = (4 + k - q) % 7,
        d = (19 * a + m) % 30,
        e = (2 * b + 4 * c + 6 * d + n) % 7;
    
    if (d === 29 && e === 6) return new Date(year, 3, 19);
    if (d === 28 && e === 6 && ((11 * m + 11) % 30 < 19)) return new Date(year, 3, 18);
    if (d + e > 9) return new Date(year, 3, d + e - 9);
    else return new Date(year, 2, 22 + d + e);
}

function orthodoxDate(year) {
    // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
    var a = year % 19,
        b = year % 4,
        c = year % 7,
        d = (19 * a + 15) % 30,
        e = (2 * b + 4 * c + 6 * d + 6) % 7,
        f = d + e;
    // (по старому стилю) Если f ≤ 9, то Пасха будет праздноваться 22 + f марта; если f > 9, то Пасха будет праздноваться f — 9 апреля.
    return f <= 9 ? new Date(year, 2, 22 + f) : new Date(year, 3, f - 9);
}

// Все даты отображаем в едином формате
function formatDate(date, opt='long') {
    var options = {
        long:  { weekday: "long", day: "numeric", month: "long", year: "numeric" },
        short: { day: "numeric", month: "long", year: "numeric" },
        week: { weekday: "long"} 
    };    
    return date.toLocaleDateString("ru", options[opt]).replace(/^.?|,/g, function(v, i) {
        return !i ? v.toUpperCase() : '<br>'
    });
}

function showBox() {
    var Y = +inputY.value || 0, 
        box = document.querySelectorAll(".box-range"), 
        i, range, a;
    
    for(i=0; i<box.length; ++i) {
        range = JSON.parse(box[i].getAttribute('range')); 
        a = [];
        if(range[0]) a.push(Y >= range[0]);
        if(range[1]) a.push(Y <= range[1]);
        box[i].hidden = !eval(a.join('&&'))
    }
    
    if(Y > 325 && Y < 4100) getEaster();
}

function getEaster() {
    var year = inputY.value, 
        razn = 0, //какое-то значение по умолчанию если меньше 300 и больше 4099
        box = document.querySelectorAll(".box-range"),
        dt, easter = {}, i, k;
        
    if (year >= 300 && year <= 499) razn = 1;
    else if (year >= 500 && year <= 599) razn = 2;
    else if (year >= 600 && year <= 699) razn = 3;
    else if (year >= 700 && year <= 899) razn = 4;
    else if (year >= 900 && year <= 999) razn = 5;
    else if (year >= 1000 && year <= 1099) razn = 6;
    else if (year >= 1100 && year <= 1299) razn = 7;
    else if (year >= 1300 && year <= 1399) razn = 8;
    else if (year >= 1400 && year <= 1499) razn = 9;
    else if (year >= 1500 && year <= 1699) razn = 10;
    else if (year >= 1700 && year <= 1799) razn = 11;
    else if (year >= 1800 && year <= 1899) razn = 12;
    else if (year >= 1900 && year <= 2099) razn = 13;
    else if (year >= 2100 && year <= 2199) razn = 14;
    else if (year >= 2200 && year <= 2299) razn = 15;
    else if (year >= 2300 && year <= 2399) razn = 16;
    else if (year >= 2500 && year <= 2599) razn = 17;
    else if (year >= 2600 && year <= 2699) razn = 18;
    else if (year >= 2700 && year <= 2899) razn = 19;
    else if (year >= 2900 && year <= 2999) razn = 20;
    else if (year >= 3000 && year <= 3099) razn = 21;
    else if (year >= 3100 && year <= 3299) razn = 22;
    else if (year >= 3300 && year <= 3399) razn = 23;
    else if (year >= 3400 && year <= 3499) razn = 24;
    else if (year >= 3500 && year <= 3699) razn = 25;
    else if (year >= 3700 && year <= 3799) razn = 26;
    else if (year >= 3800 && year <= 3899) razn = 27;
    else if (year >= 3900 && year <= 4099) razn = 28;

    dt = catholicDate(year);
    
    easter.Catholic_Easter_gr = formatDate(dt);
    
    easter.Catholic_Easter_ul_day = formatDate(dt, 'week');
    
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - razn);
    
    easter.Catholic_Easter_ul = formatDate(dt, 'week') + '<br>' + formatDate(dt, 'short');
    
    dt = orthodoxDate(year); //date1
    
    easter.Orthodox_Easter_ul = formatDate(dt, 'week') + '<br>' + formatDate(dt); 
    
    easter.Orthodox_Radunitsa_ul = formatDate(dt, 'week') + '<br>' + formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    
    easter.palm_Sunday_Orthodox_ul = formatDate(dt, 'week') + '<br>' + formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    
    easter.Maslenitsa_Orthodox_ul = formatDate(dt, 'week') + '<br>' + formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + razn); //date1_1
    
    easter.Orthodox_Easter_gr = formatDate(dt);
    
    easter.Orthodox_Easter_ul_day =  formatDate(dt, 'week');
    
    easter.Orthodox_Radunitsa_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    
    easter.Orthodox_Radunitsa_ul_day =  formatDate(dt, 'week');
    
    easter.palm_Sunday_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    
    easter.palm_Sunday_Orthodox_ul_day =  formatDate(dt, 'week');
    
    easter.Maslenitsa_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    
    easter.Maslenitsa_Orthodox_ul_day =  formatDate(dt, 'week');
    
    for(i=0; i<box.length; ++i) {
        if(!box[i].hidden) {
            razn = box[i].querySelectorAll("div > span");
            for(k=0; k<razn.length; ++k) {
                dt = razn[k].querySelector("span");
                dt.innerHTML = easter[dt.className];
            }
            break
        }
    }
}
</script>
</body>
</html>

Блондинка 13.12.2019 07:32

вообще ничего не работает...

laimas 14.12.2019 05:22

А что этого и подобных

<span class="Orthodox_Radunitsa_ul_day"></span><br> /* день недели равен Orthodox_Radunitsa_gr */

уже не надо?

Блондинка 15.12.2019 09:12

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div.box-range > div, .input { width: 70%; border: 1px solid #a9a9a9; border-radius: 12px/9px; padding: 10px 25px; margin: 0 20px 5px 0; }
span.ulian { color: hsl(240,100%,70%); }
span.grig { color: hsl(240,100%,30%); }
input { display: inline-block; text-align: center; }
</style>
</head>
<body>

<div class="input">
    <input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
</div>
<div class="box-range" range="[0,325]">
<div>Первый Никейский собор — собор Церкви, созванный императором Константином I; состоялся в июне 325 года в городе Никее (ныне Изник, Турция); продолжался больше двух месяцев и стал первым Вселенским собором в истории христианства.<br>
Введите год с 326 по 4099
</div>
</div>
<div class="box-range" range="[326,1582]">
<div>
    Пасха<br>
    <span class="ulian">
    <span class="Orthodox_Easter_ul_day"></span>
    <span class="Orthodox_Easter_ul"></span><br>
    по юлианскому календарю (старый стиль)
    </span>
    </div>
    <div>
    Радуница<br>
    <span class="ulian">
    <span class="Orthodox_Radunitsa_ul_day"></span>
    <span class="Orthodox_Radunitsa_ul"></span><br>
    по юлианскому календарю (старый стиль)
    </span>
    </div>
    <div>
    Вербное воскресенье<br>
    <span class="ulian">
    <span class="palm_Sunday_Orthodox_ul_day"></span>
    <span class="palm_Sunday_Orthodox_ul"></span><br>
    по юлианскому календарю (старый стиль)
    </span>
    </div>
    <div>
    Масленица<br>
    <span class="ulian">
    <span class="Maslenitsa_Orthodox_ul_day"></span>
    <span class="Maslenitsa_Orthodox_ul"></span><br>
    по юлианскому календарю (старый стиль)
    </span>
    </div>
</div>
<div class="box-range" range="[1583,4099]">
    <div>
    Католическая пасха<br>
    <span class="grig">
    <span class="Catholic_Easter_gr"></span><br>
    по григорианскому календарю (новый стиль)<br>
    </span>
    <span class="ulian">
    <span class="Catholic_Easter_ul_day"></span>
    <span class="Catholic_Easter_ul"></span><br>
    по юлианскому календарю (старый стиль)
    </span>
    </div>
    <div>
    Православная пасха<br>
    <span class="grig">
    <span class="Orthodox_Easter_gr"></span><br>
    по григорианскому календарю (новый стиль)<br>
    </span>
    <span class="ulian">
    <span class="Orthodox_Easter_ul_day"></span>
    <span class="Orthodox_Easter_ul"></span><br>
    по юлианскому календарю (старый стиль)
    </span>
    </div>
    <div>
    Радуница<br>
    <span class="grig">
    <span class="Orthodox_Radunitsa_gr"></span><br>
    по григорианскому календарю (новый стиль)<br>
    </span>
    <span class="ulian">
    <span class="Orthodox_Radunitsa_ul_day"></span>
     <span class="Orthodox_Radunitsa_ul"></span><br>
    по юлианскому календарю (старый стиль)
    </span>
    </div>
    <div>
    Вербное воскресенье<br>
    <span class="grig">
    <span class="palm_Sunday_Orthodox_gr"></span><br>
    по григорианскому календарю (новый стиль)<br>
    </span>
    <span class="ulian">
    <span class="palm_Sunday_Orthodox_ul_day"></span><br>
    <span class="palm_Sunday_Orthodox_ul"></span>
    по юлианскому календарю (старый стиль)
    </span>
    </div>
    <div>
    Масленица<br>
    <span class="grig">
    <span class="Maslenitsa_Orthodox_gr"></span><br>
    по григорианскому календарю (новый стиль)<br>
    </span>
    <span class="ulian">
    <span class="Maslenitsa_Orthodox_ul_day"></span>
    <span class="Maslenitsa_Orthodox_ul"></span><br>
    по юлианскому календарю (старый стиль)
    </span>
    </div>
</div>
<div class="box-range" range="[4100,0]">
    <div>Введите год с 326 по 4099</div>
</div>
<script>
var inputY = document.getElementById("YearEntry");
    
inputY.value = new Date().getFullYear();
    
inputY.addEventListener("keyup", function() {
    this.value = this.value.replace(/\D/, '');
    showBox();
});
    
inputY.addEventListener("change", showBox);
    
//document.getElementById("button1").addEventListener("click", getEaster);

showBox();
//getEaster();

function catholicDate(year) {
    // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
    // Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
    var a = year % 19,
        b = year % 4,
        c = year % 7,
        k = Math.floor(year / 100),
        p = Math.floor((13 + 8 * k) / 25),
        q = Math.floor(k / 4),
        m = (15 - p + k - q) % 30,
        n = (4 + k - q) % 7,
        d = (19 * a + m) % 30,
        e = (2 * b + 4 * c + 6 * d + n) % 7;
    
    if (d === 29 && e === 6) return new Date(year, 3, 19);
    if (d === 28 && e === 6 && ((11 * m + 11) % 30 < 19)) return new Date(year, 3, 18);
    if (d + e > 9) return new Date(year, 3, d + e - 9);
    else return new Date(year, 2, 22 + d + e);
}

function orthodoxDate(year) {
    // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
    var a = year % 19,
        b = year % 4,
        c = year % 7,
        d = (19 * a + 15) % 30,
        e = (2 * b + 4 * c + 6 * d + 6) % 7,
        f = d + e;
    // (по старому стилю) Если f ≤ 9, то Пасха будет праздноваться 22 + f марта; если f > 9, то Пасха будет праздноваться f — 9 апреля.
    return f <= 9 ? new Date(year, 2, 22 + f) : new Date(year, 3, f - 9);
}
function formatDate(date, opt='long') {
    var options = {
        long:  { weekday: "long", day: "numeric", month: "long", year: "numeric" },
        short: { day: "numeric", month: "long", year: "numeric" },
        week: { weekday: "long"} 
    };    
    return date.toLocaleDateString("ru", options[opt]).replace(/^.?|,/g, function(v, i) {
        return !i ? v.toUpperCase() : '<br>'
    });
}
function showBox() {
    var Y = +inputY.value || 0, 
        box = document.querySelectorAll(".box-range"), 
        i, range, a;
    for(i=0; i<box.length; ++i) {
        range = JSON.parse(box[i].getAttribute('range')); 
        a = [];
        if(range[0]) a.push(Y >= range[0]);
        if(range[1]) a.push(Y <= range[1]);
        box[i].hidden = !eval(a.join('&&'))
}
    if(Y > 325 && Y < 4100) getEaster();
}
function getEaster() {
    var year = inputY.value, 
        razn = 0,
    box = document.querySelectorAll(".box-range"),
    dt, easter = {}, i, k;
    if (year >= 300 && year <= 499) razn = 1;
    else if (year >= 500 && year <= 599) razn = 2;
    else if (year >= 600 && year <= 699) razn = 3;
    else if (year >= 700 && year <= 899) razn = 4;
    else if (year >= 900 && year <= 999) razn = 5;
    else if (year >= 1000 && year <= 1099) razn = 6;
    else if (year >= 1100 && year <= 1299) razn = 7;
    else if (year >= 1300 && year <= 1399) razn = 8;
    else if (year >= 1400 && year <= 1499) razn = 9;
    else if (year >= 1500 && year <= 1699) razn = 10;
    else if (year >= 1700 && year <= 1799) razn = 11;
    else if (year >= 1800 && year <= 1899) razn = 12;
    else if (year >= 1900 && year <= 2099) razn = 13;
    else if (year >= 2100 && year <= 2199) razn = 14;
    else if (year >= 2200 && year <= 2299) razn = 15;
    else if (year >= 2300 && year <= 2399) razn = 16;
    else if (year >= 2500 && year <= 2599) razn = 17;
    else if (year >= 2600 && year <= 2699) razn = 18;
    else if (year >= 2700 && year <= 2899) razn = 19;
    else if (year >= 2900 && year <= 2999) razn = 20;
    else if (year >= 3000 && year <= 3099) razn = 21;
    else if (year >= 3100 && year <= 3299) razn = 22;
    else if (year >= 3300 && year <= 3399) razn = 23;
    else if (year >= 3400 && year <= 3499) razn = 24;
    else if (year >= 3500 && year <= 3699) razn = 25;
    else if (year >= 3700 && year <= 3799) razn = 26;
    else if (year >= 3800 && year <= 3899) razn = 27;
    else if (year >= 3900 && year <= 4099) razn = 28;
    dt = catholicDate(year);
    easter.Catholic_Easter_gr = formatDate(dt);
    easter.Catholic_Easter_ul_day = formatDate(dt, 'week');
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - razn);
    easter.Catholic_Easter_ul = formatDate(dt, 'week') + '<br>' + formatDate(dt, 'short');
    dt = orthodoxDate(year); //date1
    easter.Orthodox_Easter_ul = formatDate(dt, 'week') + '<br>' + formatDate(dt);
    easter.Orthodox_Radunitsa_ul = formatDate(dt, 'week') + '<br>' + formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    easter.palm_Sunday_Orthodox_ul = formatDate(dt, 'week') + '<br>' + formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    easter.Maslenitsa_Orthodox_ul = formatDate(dt, 'week') + '<br>' + formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + razn); //date1_1
    easter.Orthodox_Easter_gr = formatDate(dt);
    easter.Orthodox_Easter_ul_day =  formatDate(dt, 'week');
    easter.Orthodox_Radunitsa_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 9));
    easter.Orthodox_Radunitsa_ul_day =  formatDate(dt, 'week');
    easter.palm_Sunday_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 7));
    easter.palm_Sunday_Orthodox_ul_day =  formatDate(dt, 'week');
    easter.Maslenitsa_Orthodox_gr = formatDate(new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 49));
    easter.Maslenitsa_Orthodox_ul_day =  formatDate(dt, 'week');
    for(i=0; i<box.length; ++i) {
        if(!box[i].hidden) {
            razn = box[i].querySelectorAll("div > span");
            for(k=0; k<razn.length; ++k) {
                dt = razn[k].querySelector("span");
                dt.innerHTML = easter[dt.className];
            }
            break
        }
    }
}
</script>
</body>
</html>

Блондинка 15.12.2019 09:13

тот же результат...


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