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

Блондинка 04.12.2019 10:27

Цитата:

Сообщение от laimas (Сообщение 516722)
.................. либо после в date4 получайте день недели и корректируйте.

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

laimas 04.12.2019 10:41

Подробнее, это new Date(год, месяц, число, час, минуты, секунды, миллисекунды), но ни как не new Date(год, месяц, число, день недели).

new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - (49 + razn)); наверное так.

PS. А может и так date1.getDate() - 49 + razn, то есть отнять какие-то 49, а к результату прибавить razn, то есть получается что вычитать нужно не 49 а 49 - razn.

Блондинка 04.12.2019 11:01

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

а мне надо получить только день недели без даты(год, месяц, число) и вывести на экран

laimas 04.12.2019 11:16

Цитата:

Сообщение от Блондинка
а мне надо получить только день недели без даты(год, месяц, число)

Здрасьте. new Date() создает объект, который возвращает метку времени по указанным параметрам. А день недели можно получить уже после его создания, запросив этот компонент, но никак нельзя передать в конструктор этого объекта в качестве параметра пятницу или субботу. Значит добавляйте/вычитайте к аргументу День месяца N дней, чтобы получить нужны день недели.

Блондинка 04.12.2019 12:08

laimas,
смотри, тут есть правильные число месяц год, и неправильный день недели
var date4 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 49 ); 
    document.getElementById("Maslenitsa_Orthodox_ul").innerHTML = formatDate(date4);


а тут есть правильные число месяц год и день недели, который правильный и для одной даты и для второй
var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_gr").innerHTML = formatDate(date4_1);

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

laimas 04.12.2019 12:13

Функция formatDate форматирует вывод полученных дат, следовательно коррекцию на день недели нужно делать до этой функции, в аргументе Date.

Если

var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49);


узнает без учета razn, то добавить ее

var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49 - razn);

Блондинка 04.12.2019 12:34

и как это реализовать в в данном скрипте?

laimas 04.12.2019 12:45

Так и реализовать

var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - (49 ± razn));

то есть, корректируется либо на разницу 49 и razn, либо на их сумму. Как точно, я понятия не имею, ибо я не знаю причины блуждания этого праздника, и меня это не интересует. Пробуйте варианты, или выполняйте сразу нужное если вам известно что из этого что.

Блондинка 04.12.2019 14:11

laimas,
одним словом надо в этом скрипте исправить функцию

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div { 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>
<input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
<input id="button1" type="button" value="Расcчитать" />
</div>
<div>
Первый Никейский собор — собор Церкви, созванный императором Константином I; состоялся в июне 325 года в городе Никее (ныне Изник, Турция); продолжался больше двух месяцев и стал первым Вселенским собором в истории христианства.<br>
Введите год с 326 по 4099</div>
<div>
Католическая пасха<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>
<div>
Введите год с 326 по 4099</div>
</div>
<script>
function catholicDate(year) {
// https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
// Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
// a = год mod 19 a = 10 
var a = year % 19;
// b = год mod 4 b = 1 
var b = year % 4;
// c = год mod 7 c = 6 
var c = year % 7;
// k = целая часть (год/100) k = 17 
var k = Math.floor(year / 100);
// p = целая часть ((13 + 8k)/25) p = 5 
var p = Math.floor((13 + 8 * k) / 25);
// q = целая часть (k/4) q = 4 
var q = Math.floor(k / 4);
// M = (15 - p + k - q) mod 30 M = 23 
var m = (15 - p + k - q) % 30;
// N = (4 + k - q) mod 7 N = 3 
var n = (4 + k - q) % 7;
// d = (19a + M) mod 30 d = 3 
var d = (19 * a + m) % 30;
// e = (2b + 4c + 6d + N) mod 7 e = 5 
var e = (2 * b + 4 * c + 6 * d + n) % 7;
// Дата Пасхи по новому стилю: 22 + d + e марта или d + e - 9 апреля 30 марта 
// Если d = 29 и e = 6, то вместо 26 апреля будет 19 апреля 
if (d === 29 && e === 6)
return new Date(year, 3, 19);
// Если d = 28, e = 6 и (11M + 11) mod 30 < 19, то вместо 25 апреля будет 18 апреля 
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/Алгоритм_Гаусса_вычисления_даты_Пасхи
// Разделить номер года на 19 и определить остаток от деления a.
var a = year % 19;
// Разделить номер года на 4 и определить остаток от деления b.
var b = year % 4;
// Разделить номер года на 7 и определить остаток от деления c.
var c = year % 7;
// Разделить сумму 19a + 15 на 30 и определить остаток d.
var d = (19 * a + 15) % 30;
// Разделить сумму 2b + 4c + 6d + 6 на 7 и определить остаток e.
var e = (2 * b + 4 * c + 6 * d + 6) % 7;
// Определить сумму f = d + e.
var 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>'
});
}
document.addEventListener("DOMContentLoaded", document_domcontentloaded);


function document_domcontentloaded(){
    var Y = document.getElementById("YearEntry");
    
    Y.value = new Date().getFullYear();
    Y.addEventListener("input", function() {
        this.value = this.value.replace(/\D/, '')
    });
    
    document.getElementById("button1").onclick = button1_click;
    
    button1_click();
}

function button1_click() {
    var year = document.getElementById("YearEntry").value, 
        razn = 0; //какое-то значение по умолчанию если меньше 300 и больше 4099

    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;

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

    var date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_ul").innerHTML = formatDate(date2);

    var date2_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_gr").innerHTML = formatDate(date2_1);

    var date3 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_ul").innerHTML = formatDate(date3);

    var date3_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_gr").innerHTML = formatDate(date3_1);

    var date4 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_ul").innerHTML = formatDate(date4);

    var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_gr").innerHTML = formatDate(date4_1);
}
</script>
</body>
</html>


следующее вывести в формате день недели, число, месяц, год
var date0_1, var date1_1, var date2_1, var date3_1, var date4_1

а в следующих датах или откоректировать день недели добавив разницу, или вывести в формате число месяц год
var date0, var date1, var date2, var date3, var date4 и добавить день недели из дат var date0_1, var date1_1, var date2_1, var date3_1, var date4_1

laimas 04.12.2019 14:49

Вот у вас и дата и день недели - date.toLocaleDateString("ru", ....
Каким образом вы собираетесь в этом корректировать пятницу на вторник?
Я уже сказал - вы высчитываете некую разницу, на которую различается день недели. И эта разница должна быть в днях, а не в пятницах или субботах, и на эти дни вы и корректирует аргумент "день" (dateX_X.getDate()). А после получения даты форматируете ее передав в функцию formatDate, которая и вернет день недели.

Если не получается, значит razn высчитывается не так или не то. Все, более я ничего сказать не могу.

Блондинка 04.12.2019 14:51

возможно ли получить в одном случае
date.toLocaleDateString("ru", { weekday: "long", day: "numeric", month: "long", year: "numeric" })


во втором
date.toLocaleDateString("ru", { day: "numeric", month: "long", year: "numeric" })


а в третьем
date.toLocaleDateString("ru", { weekday: "long" })

Блондинка 04.12.2019 15:09

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

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

так возможно?

laimas 04.12.2019 15:28

Цитата:

Сообщение от Блондинка
возможно ли получить в одном случае
во втором
а в третьем

Возможно. Перепишите функцию formatDate так:

function formatDate(date, format = { weekday: "long", day: "numeric", month: "long", year: "numeric" }) {
    return date.toLocaleDateString("ru", format).replace(/^.?|,/g, function(v, i) {
        return !i ? v.toUpperCase() : '<br>'
    });
}


И вызывайте ее не как ранее formatDate(dateX_X и т.п.), а как formatDate(dateX_X, obj), где вместо obj и подставляйте нужное: { day: "numeric", month: "long", year: "numeric" } или { weekday: "long" }, а { weekday: "long", day: "numeric", month: "long", year: "numeric" } будет по умолчанию, то есть для этого формата достаточно передать только дату - formatDate(dateX_X).

Блондинка 04.12.2019 16:32

laimas,
если бы я знала как всё это сделать, было бы здорово....

не сочти за труд, помоги решить эту проблему,

со своим уровнем знаний я могу только объяснисть, что в тех краях датах где есть .......gr, надо вывести 4 компонента,

где есть ........ ul, надо вывести день недели из gr, а число месяц год оставить как есть..

laimas 04.12.2019 16:40

Цитата:

Сообщение от Блондинка
если бы я знала как всё это сделать, было бы здорово....

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

laimas 04.12.2019 17:02

Чтобы не оперировать аргументами как объектами, перепишите функцию форматирования даты так:

function formatDate(date, opt = 'full') {
    var format = {
        full: {weekday: "long", day: "numeric", month: "long", year: "numeric"},
        brief: {day: "numeric", month: "long", year: "numeric"},
        day: {weekday: "long"}    
    };
    
    return date.toLocaleDateString("ru", format[opt] || format.full).replace(/^.?|,/g, function(v, i) {
        return !i ? v.toUpperCase() : '<br>'
    });
}


А далее вызывайте ее с параметром нужным когда это требуется (когда это нужно, вам виднее):

<p id="full"></p>
<p id="brief"></p>
<p id="day"></p>

<script>
function formatDate(date, opt = 'full') {
    var format = {
        full: {weekday: "long", day: "numeric", month: "long", year: "numeric"},
        brief: {day: "numeric", month: "long", year: "numeric"},
        day: {weekday: "long"}    
    };
    
    return date.toLocaleDateString("ru", format[opt] || format.full).replace(/^.?|,/g, function(v, i) {
        return !i ? v.toUpperCase() : '<br>'
    });
}

//какая-то полученная дата, здесь, в примере, это текущая
var dt = new Date();

//нужно получить полное представление этой даты, получаем
document.getElementById("full").innerHTML = formatDate(dt);

//нужно получить краткое представление этой даты, получаем
document.getElementById("brief").innerHTML = formatDate(dt, 'brief');

//нужно получить только день недели этой даты, получаем
document.getElementById("day").innerHTML = formatDate(dt, 'day');
</script>

Блондинка 04.12.2019 23:52

laimas,
если бы я что нибудь поняла...

ладно, есть ещё вопрос, как в этом скрипте заменить часть html-кода при разных условиях, если введён год такой по показываем одно и т. д.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div { 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>
<input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
<input id="button1" type="button" value="Расcчитать" />
</div>
// этот html-код надо вставить если введён год меньше или равен 325
<div>
Первый Никейский собор — собор Церкви, созванный императором Константином I; состоялся в июне 325 года в городе Никее (ныне Изник, Турция); продолжался больше двух месяцев и стал первым Вселенским собором в истории христианства.<br>
Введите год с 326 по 4099
</div>
// этот html-код надо вставить если введён год больше или равен 326 и меньше или равно 1582
<div>
Пасха<br>
<span class="ulian">
<span id="Orthodox_Easter_ul"></span><br>
по юлианскому календарю (старый стиль)
</span>
</div>
<div>
Радуница<br>
<span class="ulian">
<span id="Orthodox_Radunitsa_ul"></span><br>
по юлианскому календарю (старый стиль)
</span>
</div>
<div>
Вербное воскресенье<br>
<span class="ulian">
<span id="palm_Sunday_Orthodox_ul"></span><br>
по юлианскому календарю (старый стиль)
</span>
</div>
<div>
Масленица<br>
<span class="ulian">
<span id="Maslenitsa_Orthodox_ul"></span><br>
по юлианскому календарю (старый стиль)
</span>
</div>
// этот html-код надо вставить если введён год больше или равен 1583 и меньше или равно 4099
<div>
Католическая пасха<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>
// этот html-код надо вставить если введён год больше или равен 4100
<div>
Введите год с 326 по 4099</div>
</div>
<script>
function catholicDate(year) {
// https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
// Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
// a = год mod 19 a = 10 
var a = year % 19;
// b = год mod 4 b = 1 
var b = year % 4;
// c = год mod 7 c = 6 
var c = year % 7;
// k = целая часть (год/100) k = 17 
var k = Math.floor(year / 100);
// p = целая часть ((13 + 8k)/25) p = 5 
var p = Math.floor((13 + 8 * k) / 25);
// q = целая часть (k/4) q = 4 
var q = Math.floor(k / 4);
// M = (15 - p + k - q) mod 30 M = 23 
var m = (15 - p + k - q) % 30;
// N = (4 + k - q) mod 7 N = 3 
var n = (4 + k - q) % 7;
// d = (19a + M) mod 30 d = 3 
var d = (19 * a + m) % 30;
// e = (2b + 4c + 6d + N) mod 7 e = 5 
var e = (2 * b + 4 * c + 6 * d + n) % 7;
// Дата Пасхи по новому стилю: 22 + d + e марта или d + e - 9 апреля 30 марта 
// Если d = 29 и e = 6, то вместо 26 апреля будет 19 апреля 
if (d === 29 && e === 6)
return new Date(year, 3, 19);
// Если d = 28, e = 6 и (11M + 11) mod 30 < 19, то вместо 25 апреля будет 18 апреля 
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/Алгоритм_Гаусса_вычисления_даты_Пасхи
// Разделить номер года на 19 и определить остаток от деления a.
var a = year % 19;
// Разделить номер года на 4 и определить остаток от деления b.
var b = year % 4;
// Разделить номер года на 7 и определить остаток от деления c.
var c = year % 7;
// Разделить сумму 19a + 15 на 30 и определить остаток d.
var d = (19 * a + 15) % 30;
// Разделить сумму 2b + 4c + 6d + 6 на 7 и определить остаток e.
var e = (2 * b + 4 * c + 6 * d + 6) % 7;
// Определить сумму f = d + e.
var 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>'
});
}
document.addEventListener("DOMContentLoaded", document_domcontentloaded);


function document_domcontentloaded(){
    var Y = document.getElementById("YearEntry");
    
    Y.value = new Date().getFullYear();
    Y.addEventListener("input", function() {
        this.value = this.value.replace(/\D/, '')
    });
    
    document.getElementById("button1").onclick = button1_click;
    
    button1_click();
}

function button1_click() {
    var year = document.getElementById("YearEntry").value, 
        razn = 0; //какое-то значение по умолчанию если меньше 300 и больше 4099

    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;

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

    var date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_ul").innerHTML = formatDate(date2);

    var date2_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_gr").innerHTML = formatDate(date2_1);

    var date3 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_ul").innerHTML = formatDate(date3);

    var date3_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_gr").innerHTML = formatDate(date3_1);

    var date4 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_ul").innerHTML = formatDate(date4);

    var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_gr").innerHTML = formatDate(date4_1);
}
</script>
</body>
</html>

laimas 05.12.2019 05:29

Цитата:

Сообщение от Блондинка
если бы я что нибудь поняла...

А у меня как пришествие святых - сразу прям озарило зачем это спрашивается и для чего это нужно. :) Как и тут:
Цитата:

Сообщение от Блондинка
как в этом скрипте заменить часть html-кода при разных условиях

Каких условиях, какую часть? И почему вы не создаете сайт, например, "Как испечь оладушки" - вкусно, полезно и интересующихся уйма. :)

Блондинка 05.12.2019 08:13

laimas,
при условии что введён год до 325 вывести только один див с текстом (строка 17)

если введён год с 326 по 1582 вывести 4 дива с датами (строка 22)

если введён год с 1583 по 4099 вывести 5 дивов с датами (строка 51)

если введён год с 4100 вывести один див с текстом (строка 107)

laimas 05.12.2019 08:23

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div:not(.box) { 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; }
.hide {display: none;}
</style>
</head>
<body>
<div>
<input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
<input id="button1" type="button" value="Расcчитать" />
</div>

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

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

<div class="box" data-range="[1583,4099]">
    <p>этот html-код надо вставить если введён год больше или равен 1583 и меньше или равно 4099</p>
    <div>
        Католическая пасха<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>
</div>

<div data-range="[4100,0]"><p>этот html-код надо вставить если введён год больше или равен 4100</p>
Введите год с 326 по 4099</div>
</div>

<script>
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>'
    });
}

document.addEventListener("DOMContentLoaded", document_domcontentloaded);

function document_domcontentloaded(){
    var Y = document.getElementById("YearEntry");
    
    Y.value = new Date().getFullYear();
    Y.addEventListener("input", function() {
        this.value = this.value.replace(/\D/, '');
        showBox();
    });
    
    Y.addEventListener("change", showBox);
    
    document.getElementById("button1").onclick = button1_click;
    showBox();
    button1_click();
}

function showBox() {
    var Y = +document.getElementById("YearEntry").value || 0;
    document.querySelectorAll('[data-range]').forEach(function(e) {
        var range = JSON.parse(e.dataset.range), a = [];
        if(range[0]) a.push(Y >= range[0]);
        if(range[1]) a.push(Y <= range[1]);
        e.classList.toggle('hide', !eval(a.join('&&')))
    })
}

function button1_click() {
    var year = document.getElementById("YearEntry").value, 
        razn = 0; //какое-то значение по умолчанию если меньше 300 и больше 4099

    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;

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

    var date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_ul").innerHTML = formatDate(date2);

    var date2_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_gr").innerHTML = formatDate(date2_1);

    var date3 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_ul").innerHTML = formatDate(date3);

    var date3_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_gr").innerHTML = formatDate(date3_1);

    var date4 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_ul").innerHTML = formatDate(date4);

    var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_gr").innerHTML = formatDate(date4_1);
}
</script>
</body>
</html>


этот html-код надо вставить если введён ... помещено в параграфы для контроля, которые удалить.

Блондинка 07.12.2019 04:28

laimas,
а возможно ли использовать более древние методы для изменения html-кода, а то не во всех браузерах срабатывает

laimas 07.12.2019 05:53

Что за древний ... Но ведь не только код добавлен, но CSS изменен, а "древние" и его селектор div:not(.box) не поймут. Поэтому, сейчас, все элементы div принадлежащие группе диапазона (даже ели он и один) обернуты в div, видимостью которого и управляется. Управление это будет не посредством css, а свойством hidden элемента.

Событие oninput также не имеет поддержки всеми браузерами и заменен на onkeyup. Заменен метод forEach и коллекция скрываемых блоков получается иным путем.

Все остальное не изменяется, но и кстати, метод toLocaleDateString() имеет базовую поддержку браузерами, а вот с опциями этого метода не у всех браузеров гут. А браузеры IE старых версий не поймут addEventListener(), то есть обработки установленных событий не будет. Возможны проблемы и с событием DOMContentLoaded (сейчас этот обработчик вообще убран - если js-скрипт определяется после html, то DOM будет доступен). Так что, если действительно проверять на всем зоопарке браузеров, то косяков будет уйма. Поэтому либо для всех, либо шлете боком браузеры без поддержки того или иного.

laimas 07.12.2019 05:54

Это с вышеуказанными изменениями:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div.box-range > div, div.box-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="box-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 id="Orthodox_Easter_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Радуница<br>
        <span class="ulian">
        <span id="Orthodox_Radunitsa_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Вербное воскресенье<br>
        <span class="ulian">
        <span id="palm_Sunday_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
    <div>
        Масленица<br>
        <span class="ulian">
        <span id="Maslenitsa_Orthodox_ul"></span><br>
        по юлианскому календарю (старый стиль)
        </span>
    </div>
</div>

<div class="box-range" range="[1583,4099]">
    <div>
        Католическая пасха<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>
</div>

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

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

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 = +Y.value || 0, 
        box = document.getElementsByClassName("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 button1_click() {
    var year = Y.value, 
        razn = 0; //какое-то значение по умолчанию если меньше 300 и больше 4099

    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;

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

    var date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_ul").innerHTML = formatDate(date2);

    var date2_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_gr").innerHTML = formatDate(date2_1);

    var date3 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_ul").innerHTML = formatDate(date3);

    var date3_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_gr").innerHTML = formatDate(date3_1);

    var date4 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_ul").innerHTML = formatDate(date4);

    var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_gr").innerHTML = formatDate(date4_1);
}
</script>
</body>
</html>

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

laimas,
сейчас работает частично, вот если бы эти куски кода расположить ниже тега скрипт, и вставлять скрипом на страницу, чтобы иды не повторялись...

laimas 07.12.2019 08:22

Что значит частично, зачем вниз и какие иды?

Блондинка 07.12.2019 09:21

laimas,
Если ид есть в периоде 326-1582, то в периоде 1583-4099 дата не отображается...

Блондинка 07.12.2019 09:23

если бы можно эти строки
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);

    var date2_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_gr").innerHTML = formatDate(date2_1);

    var date3_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_gr").innerHTML = formatDate(date3_1);

    var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_gr").innerHTML = formatDate(date4_1);


заменить на что-то подобное, добавив второй ид

var date0_1 = catholicDate(year); 
    document.getElementById("Catholic_Easter_gr", "Catholic_Easter_ul_day").innerHTML = formatDate(date0_1);

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

    var date2_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_gr", "Orthodox_Radunitsa_ul_day").innerHTML = formatDate(date2_1);

    var date3_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_gr", "palm_Sunday_Orthodox_ul_day").innerHTML = formatDate(date3_1);

    var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_gr", "Maslenitsa_Orthodox_ul_day").innerHTML = formatDate(date4_1);


а потом используя масивы

["Catholic_Easter_gr", "Orthodox_Easter_gr", "Orthodox_Radunitsa_gr", "palm_Sunday_Orthodox_gr", "Maslenitsa_Orthodox_gr"] вывести день недели, число, месяц, год

["Catholic_Easter_ul_day", "Orthodox_Easter_ul_day", "Orthodox_Radunitsa_ul_day", "palm_Sunday_Orthodox_ul_day", "Maslenitsa_Orthodox_ul_day"] вывести только день

["Catholic_Easter_ul", "Orthodox_Easter_ul", "Orthodox_Radunitsa_ul", "palm_Sunday_Orthodox_ul", "Maslenitsa_Orthodox_ul"] вывести только число, месяц, год через функцию, то мне осталось только вставить нужные иды которых не хватает и скрипт завершён...

laimas 07.12.2019 09:42

Цитата:

Сообщение от Блондинка
Если ид есть в периоде 326-1582, то в периоде 1583-4099

Такого быть не должно, значение атрибута id у каждого элемента на странице должно быть уникальным! Изменение положения на странице проблемы не решит.

Блондинка 07.12.2019 10:05

Цитата:

Сообщение от laimas (Сообщение 516916)
Такого быть не должно, значение атрибута id у каждого элемента на странице должно быть уникальным! Изменение положения на странице проблемы не решит.

Так если убрать со страницы эти куски кода, и вставлять их скрипом, то и получится что на странице только код периода 326-1582 где ид уникальны, а если эту часть кода убрать со страницы и скриптом вставить другой кусок кода периода 1583-4099 то и получится что ид ы не повторяются...

laimas 07.12.2019 10:12

Очень понятно. )

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);

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

Блондинка 07.12.2019 10:32

как к красному иду добавить синий цвет ид? А потом у синего ида получить только день недели без других компонентов даты?

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

Блондинка 07.12.2019 10:41

Цитата:

Сообщение от 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

Блондинка 07.12.2019 11:59

чтобы ид не повторялись, как сделать что-то типа

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <div>
    <input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
    <input id="button1" type="button" value="Расcчитать" />
  </div>
 
  <script type="text/javascript">
    "use strict";
    var btn = document.querySelector("#button1");
    btn.addEventListener("click", () => {
      vat yearEntry = document.querySelector("#YearEntry").value;
      if (yearEntry <= 325) {
        // code
      } else if (yearEntry >= 326 && yearEntry <= 1582) {
        // code
      } else if (yearEntry >= 1683 && yearEntry <= 4099) {
        // code
      } else if (yearEntry >= 4100) {
        // code
      }
    });
  </script>
</body>
</html>

laimas 07.12.2019 13:17

Какие меньше 325 и больше 4100, если у вас вывод только в два блока? Да и как понять что во что? Я же русским языком (с примесью английского) пишу:

как понять чего тут надо, если в один и тот же ID "Catholic_Easter_gr" сначала вставляют дату как

document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(catholicDate(year)); //строка 220


а затем опять тоже самое, но через пень колоду

var date0_1 = catholicDate(year); //строка 222 
document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(date0_1); //строка 223


Я не буду разбираться где и при каких условиях Христос был католикам, а где православным. Просто возьмите эти строки кода и распишите что строка 220 относится к блоку с периодом 325-1582 (или другому), а строка 223 к другому блоку, и т.д. по остальным ID в строках. Хоть что-то будет конкретное, а так для меня это какая-то каша.

Блондинка 07.12.2019 15:15

у меня не получилось к строке
document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(catholicDate(year));

отнять разницу и получить

var date0 = new Date(date0_1.getFullYear(), date0_1.getMonth(), date0_1.getDate() - razn);  document.getElementById("Catholic_Easter_ul").innerHTML = formatDate(date0);


и только добавив методом тыка строку
document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(date0_1);

что то получилось

Блондинка 07.12.2019 15:20

если меньше 325 показать один див с текстом, если больше 4100 показать один див с другим текстом

до 1582 не было нового стиля и расчёты были только по старому стилю что и равняется расчёту православной пасхи

laimas 07.12.2019 15:25

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

document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(catholicDate(year)); //это об элементе какого блока речь?
     
    var date0_1 = catholicDate(year);
    document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(date0_1); //а этот где?
     
    var date0 = new Date(date0_1.getFullYear(), date0_1.getMonth(), date0_1.getDate() - razn);
    document.getElementById("Catholic_Easter_ul").innerHTML = formatDate(date0); //а этот?
     
    var date1 = orthodoxDate(year);
    document.getElementById("Orthodox_Easter_ul").innerHTML = formatDate(date1);
     
    var date1_1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + razn);
    document.getElementById("Orthodox_Easter_gr").innerHTML = formatDate(date1_1);
 
    var date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9);
    document.getElementById("Orthodox_Radunitsa_ul").innerHTML = formatDate(date2);
 
    var date2_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() + 9);
    document.getElementById("Orthodox_Radunitsa_gr").innerHTML = formatDate(date2_1);
 
    var date3 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 7);
    document.getElementById("palm_Sunday_Orthodox_ul").innerHTML = formatDate(date3);
 
    var date3_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 7);
    document.getElementById("palm_Sunday_Orthodox_gr").innerHTML = formatDate(date3_1);
 
    var date4 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 49);
    document.getElementById("Maslenitsa_Orthodox_ul").innerHTML = formatDate(date4);
 
    var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49);
    document.getElementById("Maslenitsa_Orthodox_gr").innerHTML = formatDate(date4_1);


И так по всем строкам, где ссылается на элемент по ID, можете написать о каком именно элементе речь идет? Они же у вас практически все дубликатами.

Блондинка 07.12.2019 19:02

если название оканчивается на _gr это дата по григорианскому календарю

если на ul по юлианскому календарю

в периоде 326-1582 только даты по юлианскому календарю, в периоде 1583-4099 даты по обоим календарям

laimas 07.12.2019 20:18

Вы не понимаете о чем я прошу. У вас сейчас два блока в котором есть элементы, в которых помещается вами определенные даты. Первый блок, это с атрибутом range="[326,1582]", и второй range="[1583,4099]". В каждом из этих блоков есть дубликаты ID. А это ваши строки, которыми вы в эти ID помещаете даты (взяты только строки и ID, по порядку из вашего кода):

document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(catholicDate(year));
document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(date0_1);
document.getElementById("Catholic_Easter_ul").innerHTML = formatDate(date0);
document.getElementById("Orthodox_Easter_ul").innerHTML = formatDate(date1);
document.getElementById("Orthodox_Easter_gr").innerHTML = formatDate(date1_1);
document.getElementById("Orthodox_Radunitsa_ul").innerHTML = formatDate(date2);
document.getElementById("Orthodox_Radunitsa_gr").innerHTML = formatDate(date2_1);
document.getElementById("palm_Sunday_Orthodox_ul").innerHTML = formatDate(date3);
document.getElementById("palm_Sunday_Orthodox_gr").innerHTML = formatDate(date3_1);
document.getElementById("Maslenitsa_Orthodox_ul").innerHTML = formatDate(date4);
document.getElementById("Maslenitsa_Orthodox_gr").innerHTML = formatDate(date4_1);


Напишите комментарий к каждой строке в какой блок она должна помещать - в первый или второй. У вас первые две строки это одно и тоже в расчетах, значит это должно выводиться и в первом, и во втором, то есть понятно. А остальные что куда, это вы можете написать? Я уже говорил, я не буду разбираться с днем рождения Христа, и не хочу, и некогда. :)

Блондинка 08.12.2019 00:40

document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(catholicDate(year)); // во втором
document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(date0_1); // во втором 
document.getElementById("Catholic_Easter_ul").innerHTML = formatDate(date0); // во втором 
document.getElementById("Orthodox_Easter_ul").innerHTML = formatDate(date1); // в обоих блоках
document.getElementById("Orthodox_Easter_gr").innerHTML = formatDate(date1_1); // во втором
document.getElementById("Orthodox_Radunitsa_ul").innerHTML = formatDate(date2); // в обоих блоках
document.getElementById("Orthodox_Radunitsa_gr").innerHTML = formatDate(date2_1); // во втором
document.getElementById("palm_Sunday_Orthodox_ul").innerHTML = formatDate(date3); // в обоих блоках
document.getElementById("palm_Sunday_Orthodox_gr").innerHTML = formatDate(date3_1); // во втором
document.getElementById("Maslenitsa_Orthodox_ul").innerHTML = formatDate(date4); // в обоих блоках
document.getElementById("Maslenitsa_Orthodox_gr").innerHTML = formatDate(date4_1); // во втором


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