Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279

Как вставить функцию расчёта?

01.05.2021, 01:45. Показов 1628. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть скрипт выводящий/скрывающий блок с поздравлениями...

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style>
div.holiday { background-color: #ececec; text-align: center; border: 1px solid #999; padding: 20px; color: #f00; font: bold 24px serif; }
</style>
</head>
<body>
<div id="holigay"></div>
<script type="text/javascript">
var holidays = {
    '3': {
        '8': {'start': 8, 'duration': 12, 'compliments': 'С 8 марта !'},
        '9': {'start': 12, 'duration': 2, 'compliments': 'Поздравление с Днем счастливых!'}    
    },
    '4': {
        '11': {'start': 8, 'duration': 12, 'compliments': 'С днём космонавтики !'},
        '30': {'start': 12, 'duration': 2, 'compliments': 'с 30 апреля! '   
    }
},
    '5': {
        '1': {'start': 8, 'duration': 12, 'compliments': 'С 1 мая !'},
        '9': {'start': 12, 'duration': 2, 'compliments': 'С 9 мая !'    
    }
}
},
 d = new Date(), m;
 
if((m = holidays[d.getMonth()+1]) && m[d.getDate()]) {
    m = m[d.getDate()];
    if(d.getHours()>=m.start) {
        var b = document.createElement('div');
        b.className = 'holiday';
        b.innerHTML = m.compliments;
        document.querySelector('body').appendChild(b)
    }  
}
</script>
</body>
</html>
в нем фиксированные даты, вопрос как вывести поздравления с праздниками, даты которых меняются каждый год?
есть две функции для расчёта пасхи православной и католической

JavaScript
1
2
3
4
5
6
7
8
9
10
11
function orthodoxDate(year) {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var d = (19 * a + 15) % 30;
            var e = (2 * b + 4 * c + 6 * d + 6) % 7;
            var f = d + e;
            return f <= 26
                ? new Date(year, 3, 4 + f)
                : new Date(year, 4, f - 26);
        }
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function catholicDate(year) {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var k = Math.floor(year / 100);
            var p = Math.floor((13 + 8 * k) / 25);
            var q = Math.floor(k / 4);
            var m = (15 - p + k - q) % 30;
            var n = (4 + k - q) % 7;
            var d = (19 * a + m) % 30;
            var 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);
        }
как в скрипт добавить эти функции, чтобы блок появлялся в эти даты пасхи православной католической, православной радуницей(+9 дней) и православной троицей(+49 дней) ?

Добавлено через 2 часа 33 минуты
попробую описать скрипт подробнее, на странице сайта есть блок
HTML5
1
<div id="holiday"></div>
, при наступлении события(определённой даты) он должен появляться на странице, по окончании события пропадать с помощью свойства display меняя значение none или block, обычно продолжительность события 24 часа, также должна быть возможность установить начало и конец отдельных событий с точностью до часов и минут, и надо с помощью вышеуказанных функций получить месяц и дату вышеуказанных праздников, для текущего года, и вывести этот блок на экран...

это возможно средствами js ? и кто может помочь реализовать подобный скрипт?

Добавлено через 17 минут
p. s. также должна быть возможность установить продолжительность отдельного события больше суток, например чтобы поздравление типа с наступающим новым годом, можно было установить продолжительностью 3 суток 12 часов 45 минут например,.........

Добавлено через 1 час 26 минут
народ, йа задолбалась несколько лет выводить вручную под шапкой сайта поздравления с днем рождения "живым" посетителям, пытаюсь автоматизировать этот процесс с помощью js, так же пытаюсь учесть всевозможные варианты, например поздравить пользователей с днём победы, и на несколько дней "повесить" ленточку на сайт, или возможно на полдня вывесить объявление посетителям, и учесть что в один день может быть два и более праздника, рождество и день рождения у кого нибудь в один день... но в основном скрипт нужен чтобы поздравить посетителей с праздниками, днём рождения и тд, тоесть чтобы раз в год с 00:00 и до 23:59:59 вывесить поздравление...

помогите кто может, сегодня 1 мая, завтра пасха, как это сделать на яваскрипте?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2021, 01:45
Ответы с готовыми решениями:

Подсчет в Word как вставить формулу автоматического расчета
Всем привет, Подскажите пожалуйста Имеем текст в ворде &quot;5 яблок, по цене 15 за штуку, стоят 75.&quot; Как сделать, что-бы стоимость...

Создать модуль, содержащий функцию расчета одного слагаемого и процедуру расчета всей суммы целиком
Помогите с заданием, модуль вроде написал, но при вызове в программе дальше одного слагаемого считать отказывается unit modul1; ...

как мне функцию одного класса в функцию базового вставить
как мне функцию одного класса в функцию базового вставить??чет не хера не получается.... class Car { public : void...

23
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
01.05.2021, 03:21
Ну вот сейчас у вас в качестве ключей выступают фиксированные даты. А можно в качестве ключей использовать строки — условные названия праздников. Примерно так:
JavaScript
1
2
3
4
5
6
{
'5': {
        'Catholic Easter': {'start': 4, 'duration': 1, 'compliments': 'С праздником Пасхи !'},
        'Orthodox Easter': {'start': 2, 'duration': 1, 'compliments': 'С праздником Пасхи !'}
    }
}
Затем мы проверяем сегодняшний (или завтрашний) день, применяя к текущему году функции расчёта и сравнивая результат с d.getDate(). По итогам сравнения мы составляем структуру вроде
JavaScript
1
{CatholicEaster: true, OrthodoxEaster: false}
Затем проходимся по ключам этого объекта и выводим нужные поздравления.

Не по теме:

Я понимаю, что это пока не код, но это моя идея.

0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
01.05.2021, 03:48  [ТС]
DrType, наверное проще будет в массиве месяца(май)
JavaScript
1
2
3
4
'5': {
        '1': {'start': 8, 'duration': 12, 'compliments': 'С 1 мая !'},
        '9': {'start': 12, 'duration': 2, 'compliments': 'С 9 мая !'    
    }
применить не start и duration, а start и stop (часы минуты секунды, необязательные параметры, добавляемые только в случае необходимости) и один (с текстом и тегами переноса) или несколько compliments с текстом(если добавлены start и/или stop), также и с пасхой если месяц и дата совпадают применяем дисплей блок, не совпадает, применяем дисплей ноне, как это решить на яваскрипт?

Добавлено через 5 минут
не использовать ни start ни duration,, но что-бы была возможность просто добавить start и stop...

как для мая, так и для любого месяца...
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
01.05.2021, 09:24
Блондинка йа, как-то так, наверно
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<!DOCTYPE html>
<html>
 
<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>Page Title</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
</head>
 
<body>
    <style>
        div.holiday>div {
            background-color: #ececec;
            text-align: center;
            border: 1px solid #999;
            padding: 20px;
            color: #f00;
            font: bold 24px serif;
        }
    </style>
    <div id="hollyday" style="display: none;"></div>
    <script>
 
        let fixDates = [
            { month: 3, day: 8, hour: 8, duration: 12, compliments: "С 8 марта" },
            { month: 3, day: 9, hour: 12, duration: 2, compliments: "Поздравление с Днем счастливых!" },
            { month: 4, day: 11, hour: 8, duration: 12, compliments: "С днём космонавтики !" },
            { month: 4, day: 30, hour: 12, duration: 2, compliments: "с 30 апреля! " },
            { month: 5, day: 1, hour: 0, duration: 24, compliments: "С 1 мая !" },
            { month: 5, day: 9, hour: 12, duration: 2, compliments: "С 9 мая !" }
        ];
 
        function orthodoxDate(year)
        {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var d = (19 * a + 15) % 30;
            var e = (2 * b + 4 * c + 6 * d + 6) % 7;
            var f = d + e;
            return f <= 26
                ? new Date(year, 3, 4 + f)
                : new Date(year, 4, f - 26);
        }
 
        function catholicDate(year)
        {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var k = Math.floor(year / 100);
            var p = Math.floor((13 + 8 * k) / 25);
            var q = Math.floor(k / 4);
            var m = (15 - p + k - q) % 30;
            var n = (4 + k - q) % 7;
            var d = (19 * a + m) % 30;
            var 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 getActualCompliments()
        {
            let now = new Date();
            let result = fixDates.filter(v =>
            {
                let currentDate = new Date(now.getFullYear(), v.month - 1, v.day, v.hour);
                let durms = v.duration * 3600000;
                console.log(now, currentDate, (now - currentDate) / 3600000);
                let rg = now - currentDate;
                return rg <= durms && rg >= 0;
            }).map(v => v.compliments);
            let ortodox = orthodoxDate(now.getFullYear());
            let caholic = catholicDate(now.getFullYear());
            if (ortodox.getMonth() == now.getMonth() && ortodox.getDate() == now.getDate())
                result.push("С православной пасхой!");
            if (caholic.getMonth() == now.getMonth() && caholic.getDate() == now.getDate())
                result.push("С католической пасхой!");
            return result;
        }
 
        let actualCompliments = getActualCompliments();
        console.log(actualCompliments);
        if (actualCompliments.length > 0)
        {
            let hollyday = document.getElementById("hollyday");
            hollyday.style.display = "block";
            for (let c of actualCompliments)
            {
                let div = document.createElement("div");
                hollyday.appendChild(div);
                div.textContent = c;
            }
        }
    </script>
</body>
 
</html>
Здесь я список фиксированных дат выровнял, и теперь ему не обязательно быть упорядоченным, то есть можно новую запись добавить просто в конец списка. Записи просто отфильтровываются из тех, которые актуальны на текущий момент, вытаскиваются поздравления, далее в список добавляются вычисляемые даты и потом просто проверяем, есть ли в списке что-нибудь, если есть - открываем блок и запихиваем в него все по очереди.
1
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
01.05.2021, 11:24  [ТС]
diadiavova, а что такое start и duration, вернее не что а какие значения могут принимать?
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
01.05.2021, 11:32
Цитата Сообщение от Блондинка йа Посмотреть сообщение
а что такое start и duration, вернее не что а какие значения могут принимать?
В моем варианте нет никакого старта, там просто день месяц и час начала праздника, а duration у меня - это продолжительность в часах. Это можно изменить, я просто показал как это можно все реализовать, а детали уже можно под нужды подогнать.
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
01.05.2021, 12:49  [ТС]
diadiavova, ясно, спасибо, но у тебя почему-то стиль не срабатывает...
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
01.05.2021, 15:00
Цитата Сообщение от Блондинка йа Посмотреть сообщение
но у тебя почему-то стиль не срабатывает...
потому что с твоего скопировал не проверяя и добавил , что применяться должен к потомку, а так я написал hollyday, а не holiday, ну и кроме того, в селекторах css id надо указывать через решетку, а точка для классов. Так что либо в стиле надо прописать #hollyday>div, либо в диве class="holiday"
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
01.05.2021, 15:24  [ТС]
в принципе такой вариант нормальный, но остаются вопросы, как вставить/удалить в событие start(00:00:00:000) stop(23:59:59:999), вместо hours и duration, как сделать чтобы комплимент отображался как хтмл код а не текст, и как правильно вывести радуницу (+9 дней) и троицу (+49 дней) (православные)

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!DOCTYPE html>
<html>
 
<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>Page Title</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
</head>
 
<body>
    <style>
        #holiday>div {
            background-color: #ececec;
            text-align: center;
            border: 1px solid #999;
            padding: 20px;
            color: #f00;
            font: bold 24px serif;
            .abc { color: red; }
        }
    </style>
    <div id="holyday" style="display: none;"></div>
    <script>
 
        var fixDates = [
            { month: 3, day: 8, hour: 8, duration: 12, compliments: "С 8 марта" },
            { month: 3, day: 9, hour: 12, duration: 2, compliments: "С 9 мая !" },
            { month: 4, day: 11, hour: 8, duration: 12, compliments: "С днём космонавтики !" },
            { month: 4, day: 30, hour: 12, duration: 2, compliments: "с 30 апреля !" },
            { month: 5, day: 1, hour: 0, duration: 24, compliments: "<span class='abc'>С 1 мая !</span>" },
            { month: 5, day: 9, hour: 12, duration: 2, compliments: "С 9 мая !" }
        ];
 
        function orthodoxDate(year)
        {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var d = (19 * a + 15) % 30;
            var e = (2 * b + 4 * c + 6 * d + 6) % 7;
            var f = d + e;
            return f <= 26
                ? new Date(year, 3, 4 + f)
                : new Date(year, 4, f - 26);
        }
 
        function catholicDate(year)
        {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var k = Math.floor(year / 100);
            var p = Math.floor((13 + 8 * k) / 25);
            var q = Math.floor(k / 4);
            var m = (15 - p + k - q) % 30;
            var n = (4 + k - q) % 7;
            var d = (19 * a + m) % 30;
            var 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 getActualCompliments()
        {
            var now = new Date(); // new Date( "2 May 2021 00:00:00:001" ) православная или new Date( "4 April 2021" ) католическая
            var result = fixDates.filter(v =>
            {
                var currentDate = new Date(now.getFullYear(), v.month - 1, v.day, v.hour);
                var durms = v.duration * 3600000;
                console.log(now, currentDate, (now - currentDate) / 3600000);
                var rg = now - currentDate;
                return rg <= durms && rg >= 0;
            }).map(v => v.compliments);
            var ortodox = orthodoxDate(now.getFullYear());
            var caholic = catholicDate(now.getFullYear());
            if (ortodox.getMonth() == now.getMonth() && ortodox.getDate() == now.getDate())
                result.push("<span class ='abc'>С православной пасхой !</span>");
            if (caholic.getMonth() == now.getMonth() && caholic.getDate() == now.getDate())
                result.push("<span class ='abc'>С католической пасхой !</span>");
            return result;
        }
 
        var actualCompliments = getActualCompliments();
        console.log(actualCompliments);
        if (actualCompliments.length > 0)
        {
            var holyday = document.getElementById("holyday");
            holyday.style.display = "block";
            for (var c of actualCompliments)
            {
                var div = document.createElement("div");
                holyday.appendChild(div);
                div.textContent = c;
            }
        }
    </script>
</body>
 
</html>
Добавлено через 2 минуты
моих знаний в js боюсь не хватит для этого... кто поможет?

Добавлено через 6 минут
типа если не добавлены start() и stop() или если не указаны параметры, то по умолчанию имеют значения start(00:00:00:000) и stop(23:59:59:999) по умолчанию...
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
01.05.2021, 16:33
Цитата Сообщение от Блондинка йа Посмотреть сообщение
как вставить/удалить в событие start(00:00:00:000) stop(23:59:59:999), вместо hours и duration
Если ты вместо продолжительности будешь указывать начальную и конечную даты, то код придется переделать. Это так принципиально? Мне кажется, так как есть удобнее, там если знаешь, что пасха три дня длится, то и пишешь соответственно продолжительность и это не будет меняться, в противном случае, вычислив дату пасхи придется еще три дня прибавлять каждый раз. Да и логика проверки усложнится, поскольку придется сначала сравнивать текущий момент с началом, потом с концом. Я уже не говорю о том, что обе даты придется в данные вносить, что увеличит их размер. Что до имен полей в структуре данных, то их можно поменять безболезненно, только потом в коде обработки надо это учесть.
Цитата Сообщение от Блондинка йа Посмотреть сообщение
как сделать чтобы комплимент отображался как хтмл код а не текст
В сотой строке твоего кода вместо textContent используй innerHTML. Ну это если решать задачу как есть. С другой стороны можно сразу все блоки вставить в страницу и сделать их невидимыми, добавить в каждый блок, какой-нибудь дата-атрибут, с данными в урощенной форме, ну тип data-date="5 1 0 24", что означает первое мая с нуля часов в течение двадцати четырех часов, дальше просто пройтись по всем блокам и раскрыть те из них, которые соответствуют текущему моменту. Естественно для переходящих праздников предусмотреть другую логику.
Цитата Сообщение от Блондинка йа Посмотреть сообщение
и как правильно вывести радуницу (+9 дней) и троицу (+49 дней) (православные)
В смысле как прибавить дни к дате? Ну как-то так наверно
JavaScript
1
2
3
        let now49 = new Date();
        now49.setDate(now49.getDate() + 49);
        console.log(now49);
Цитата Сообщение от Блондинка йа Посмотреть сообщение
типа если не добавлены start() и stop() или если не указаны параметры, то по умолчанию имеют значения start(00:00:00:000) и stop(23:59:59:999) по умолчанию...
А это зависит от того, как ты инициируешь данные. Если это делать с помощью специальной функции, то можно написать так, чтобы она имела значения параметров по умолчанию, ну что-то типа такого
JavaScript
1
2
3
4
        function foo(month, day, compliment, hour = 0)
        {
            return { month: month, day: day, hour: hour, compliment: compliment }
        }
В ином случае в коде обработки можно писать, ну скажем, опять-таки часы заменить можно в 75-строчке вместо v.hour напиши v.hour || 0.
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
01.05.2021, 20:47  [ТС]
diadiavova, поскольку придётся пройтись по всем датам в году в календаре телефона, то наверное проще сделать без duration, и если событие длится три дня, то в каждый из этих дней добавить эти события, это на случай если в один день несколько событий и одно из них закончиться раньше полуночи, тогда можно будет добавить перенос строки так чтобы не получилось свободного пространства, ну типа вместо <span>text<br></span><span>text</span> записать <span>text</span><span><br>text</span> тогда второй спан вместе с переносом пропадут в 23 часа (образно), поэтому и думаю что лучше и удобнее сделать так, с stop вместо duration...

Добавлено через 4 минуты
JavaScript
1
2
3
let now49 = new Date();
        now49.setDate(now49.getDate() + 49);
        console.log(now49);
как в эту дату вывести текст "С троицей!" ?

Добавлено через 49 минут
по поводу start() и stop(), имелось ввиду чтоб можно было указать start() (пустое значение или вообще не указывать), start(00) (только часы), start(00:00) (только часы и минуты), или start(00:00:00) (часы, минуты, секунды)

Добавлено через 54 минуты
добавить даты имелось ввиду типа этого

JavaScript
1
2
3
4
5
6
if (radunitsa.getMonth() == now.getMonth(), now.getDate() + 9 == ortodox.getDate()
            result.push("<span class ='abc'>С радуницей !</span>");
            return result;
            if (trinity.getMonth() == now.getMonth(), now.getDate() + 9 == ortodox.getDate()
            result.push("<span class ='abc'>С троицей !</span>");
            return result;
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
02.05.2021, 10:23
Цитата Сообщение от Блондинка йа Посмотреть сообщение
поскольку придётся пройтись по всем датам в году в календаре телефона, то наверное проще сделать без duration
Это еще почему?
Цитата Сообщение от Блондинка йа Посмотреть сообщение
, и если событие длится три дня, то в каждый из этих дней добавить эти события, это на случай если в один день несколько событий и одно из них закончиться раньше полуночи, тогда можно будет добавить перенос строки так чтобы не получилось свободного пространства, ну типа вместо <span>text<br></span><span>text</span> записать <span>text</span><span><br>text</span> тогда второй спан вместе с переносом пропадут в 23 часа (образно), поэтому и думаю что лучше и удобнее сделать так, с stop вместо duration...
Слушай, ну вот мой код, изменил в нем продолжительность первого мая и сегодня вывело две даты. Что тебя не устраивает?
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<!DOCTYPE html>
<html>
 
<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>Page Title</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
</head>
 
<body>
    <style>
        #hollyday>div {
            background-color: #ececec;
            text-align: center;
            border: 1px solid #999;
            padding: 20px;
            color: #f00;
            font: bold 24px serif;
        }
    </style>
    <div id="hollyday">
 
    </div>
    <script>
 
        let fixDates = [
            { month: 3, day: 8, hour: 8, duration: 12, compliments: "С 8 марта" },
            { month: 3, day: 9, hour: 12, duration: 2, compliments: "Поздравление с Днем счастливых!" },
            { month: 4, day: 11, hour: 8, duration: 12, compliments: "С днём космонавтики !" },
            { month: 4, day: 30, hour: 12, duration: 2, compliments: "с 30 апреля! " },
            { month: 5, day: 1, hour: 0, duration: 48, compliments: "С 1 мая !" },
            { month: 5, day: 9, hour: 12, duration: 2, compliments: "С 9 мая !" }
        ];
 
        function orthodoxDate(year)
        {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var d = (19 * a + 15) % 30;
            var e = (2 * b + 4 * c + 6 * d + 6) % 7;
            var f = d + e;
            return f <= 26
                ? new Date(year, 3, 4 + f)
                : new Date(year, 4, f - 26);
        }
 
        function catholicDate(year)
        {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var k = Math.floor(year / 100);
            var p = Math.floor((13 + 8 * k) / 25);
            var q = Math.floor(k / 4);
            var m = (15 - p + k - q) % 30;
            var n = (4 + k - q) % 7;
            var d = (19 * a + m) % 30;
            var 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 getActualCompliments()
        {
            let now = new Date();
            let result = fixDates.filter(v =>
            {
                let currentDate = new Date(now.getFullYear(), v.month - 1, v.day, v.hour);
                let durms = v.duration * 3600000;
                console.log(now, currentDate, (now - currentDate) / 3600000);
                let rg = now - currentDate;
                return rg <= durms && rg >= 0;
            }).map(v => v.compliments);
            let ortodox = orthodoxDate(now.getFullYear());
            let caholic = catholicDate(now.getFullYear());
            if (ortodox.getMonth() == now.getMonth() && ortodox.getDate() == now.getDate())
                result.push("С православной пасхой!");
            if (caholic.getMonth() == now.getMonth() && caholic.getDate() == now.getDate())
                result.push("С католической пасхой!");
            return result;
        }
 
        let actualCompliments = getActualCompliments();
        console.log(actualCompliments);
        if (actualCompliments.length > 0)
        {
            let hollyday = document.getElementById("hollyday");
            hollyday.style.display = "block";
            for (let c of actualCompliments)
            {
                let div = document.createElement("div");
                hollyday.appendChild(div);
                div.textContent = c;
            }
        }
        function foo(month, day, compliment, hour = 0)
        {
            return { month: month, day: day, hour: hour, compliment: compliment }
        }
 
        let now49 = new Date();
        now49.setDate(now49.getDate() + 49);
        console.log(now49);
    </script>
</body>
 
</html>[quote="Блондинка йа;15461974"]как в эту дату вывести текст "С троицей!" ?[/quote]
Ну я же изначально показал как добавить вычисляемые даты. Самое простое - это добавить код в getActualComliments
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        function getActualCompliments()
        {
            let now = new Date();
            let result = fixDates.filter(v =>
            {
                let currentDate = new Date(now.getFullYear(), v.month - 1, v.day, v.hour);
                let durms = v.duration * 3600000;
                console.log(now, currentDate, (now - currentDate) / 3600000);
                let rg = now - currentDate;
                return rg <= durms && rg >= 0;
            }).map(v => v.compliments);
            let ortodox = orthodoxDate(now.getFullYear());
            let caholic = catholicDate(now.getFullYear());
            if (ortodox.getMonth() == now.getMonth() && ortodox.getDate() == now.getDate())
                result.push("С православной пасхой!");
            if (caholic.getMonth() == now.getMonth() && caholic.getDate() == now.getDate())
                result.push("С католической пасхой!");
            
            let trinity = new Date(ortodox);
            trinity.setDate(trinity.getDate() + 49);
            if (trinity.getMonth() == now.getMonth() && trinity.getDate() == now.getDate())
                result.push("С троицей!");
            return result;
        }
Правда в таком случае, если вычисляемых дат будет много, то там окажется много дублирующего кода. Поэтому проблему лучше решить путем добавления вычисленных дат в список, изначально состоявший из фиксированных дат. После чего уже запускать обработку
Цитата Сообщение от Блондинка йа Посмотреть сообщение
по поводу start() и stop(), имелось ввиду чтоб можно было указать start() (пустое значение или вообще не указывать), start(00) (только часы), start(00:00) (только часы и минуты), или start(00:00:00) (часы, минуты, секунды)
Ну я же уже написал об этом в предыдущем посте. У меня там значение по умолчанию задано числом, ты можешь использовать строку.

Добавлено через 16 минут
Вот вариант с добавлением динамически вычисленных дат.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<!DOCTYPE html>
<html>
 
<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>Page Title</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
</head>
 
<body>
    <style>
        #hollyday>div {
            background-color: #ececec;
            text-align: center;
            border: 1px solid #999;
            padding: 20px;
            color: #f00;
            font: bold 24px serif;
        }
    </style>
    <div id="hollyday">
 
    </div>
    <script>
 
        let fixDates = [
            { month: 3, day: 8, hour: 8, duration: 12, compliments: "С 8 марта" },
            { month: 3, day: 9, hour: 12, duration: 2, compliments: "Поздравление с Днем счастливых!" },
            { month: 4, day: 11, hour: 8, duration: 12, compliments: "С днём космонавтики !" },
            { month: 4, day: 30, hour: 12, duration: 2, compliments: "с 30 апреля! " },
            { month: 5, day: 1, hour: 0, duration: 48, compliments: "С 1 мая !" },
            { month: 5, day: 9, hour: 12, duration: 2, compliments: "С 9 мая !" }
        ];
 
        function orthodoxDate(year)
        {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var d = (19 * a + 15) % 30;
            var e = (2 * b + 4 * c + 6 * d + 6) % 7;
            var f = d + e;
            return f <= 26
                ? new Date(year, 3, 4 + f)
                : new Date(year, 4, f - 26);
        }
 
        function catholicDate(year)
        {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var k = Math.floor(year / 100);
            var p = Math.floor((13 + 8 * k) / 25);
            var q = Math.floor(k / 4);
            var m = (15 - p + k - q) % 30;
            var n = (4 + k - q) % 7;
            var d = (19 * a + m) % 30;
            var 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);
        }
 
        // Здесь добавляем в массив fixDates динамически вычесленные даты
        (function ()
        {
            let currentYear = new Date().getFullYear();
            let orthodox = orthodoxDate(currentYear);
            let catholic = catholicDate(currentYear)
            let trinity = orthodoxDate(currentYear);
            trinity.setDate(trinity.getDate() + 49);
            for (dyn of [[orthodox, "С православной пасхой!"],
            [catholic, "С католической пасхой"],
            [trinity, "С троицей!"]])
            {
                fixDates.push(
                    { month: dyn[0].getMonth() + 1, day: dyn[0].getDate(), hour: 0, duration: 24, compliments: dyn[1] }
                )
 
            }
        })();
 
        function getActualCompliments()
        {
            let now = new Date();
            let result = fixDates.filter(v =>
            {
                let currentDate = new Date(now.getFullYear(), v.month - 1, v.day, v.hour);
                let durms = v.duration * 3600000;
                console.log(now, currentDate, (now - currentDate) / 3600000);
                let rg = now - currentDate;
                return rg <= durms && rg >= 0;
            }).map(v => v.compliments);
            return result;
        }
 
        let actualCompliments = getActualCompliments();
        console.log(actualCompliments);
        if (actualCompliments.length > 0)
        {
            let hollyday = document.getElementById("hollyday");
            hollyday.style.display = "block";
            for (let c of actualCompliments)
            {
                let div = document.createElement("div");
                hollyday.appendChild(div);
                div.textContent = c;
            }
        }
        function foo(month, day, compliment, hour = 0)
        {
            return { month: month, day: day, hour: hour, compliment: compliment }
        }
 
        let now49 = new Date();
        now49.setDate(now49.getDate() + 49);
        console.log(now49);
    </script>
</body>
 
</html>
1
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
06.05.2021, 19:00  [ТС]
цель этого скрипта, вывести поздравление с гос праздниками трёх стран, (Россия, Украина, Беларусь), плюс очень много поздравлений с днём рождения (7-15 в месяц),

вот рабочий вариант, всё работает и всё показывает...


PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<!DOCTYPE html>
<html>
 
<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>Page Title</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
</head>
 
<body>
    <style>
        #hollyday>div {
            background-color: #ececec;
            text-align: center;
            border: 1px solid #999;
            padding: 20px;
            color: #f00;
            font: bold 24px serif;
        }
    </style>
    <div id="hollyday">
 
    </div>
    <script>
 
        var fixDates = [
            { month: 3, day: 8, hour: 0, duration: 12, compliments: "С 8 марта !" },
            { month: 3, day: 9, hour: 0, duration: 2, compliments: "С 9 марта !!" },
            { month: 4, day: 11, hour: 0, duration: 12, compliments: "С днём космонавтики !" },
            { month: 4, day: 30, hour: 0, duration: 2, compliments: "с 30 апреля !" },
            { month: 5, day: 1, hour: 0, duration: 24, compliments: "С 1 мая !" },
            { month: 5, day: 9, hour: 0, duration: 2, compliments: "С 9 мая !" }
        ];
 
        
 
        function catholicDate(year)
        {
            var a = year % 19;
            var b = year % 4;
            var c = year % 7;
            var k = Math.floor(year / 100);
            var p = Math.floor((13 + 8 * k) / 25);
            var q = Math.floor(k / 4);
            var m = (15 - p + k - q) % 30;
            var n = (4 + k - q) % 7;
            var d = (19 * a + m) % 30;
            var 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)
        {
        var a = year % 19;
        var b = year % 4;
        var c = year % 7;
        var d = (19 * a + 15) % 30;
        var e = (2 * b + 4 * c + 6 * d + 6) % 7;
        var f = d + e;
        return f <= 26
        ? new Date(year, 3, 4 + f)
        : new Date(year, 4, f - 26);
        }
 
        function getActualCompliments()
        {
            var now = new Date( "9 May 2021 00:00:00:001" ); // кат.пасха "4 April 2021 00:00:00:000", прав.пасха "2 May 2021 00:00:00:000", радуница "11 May 2021 00:00:00:000", троица "20 June 2021 00:00:00:000"
            var result = fixDates.filter(v =>
            {
            var currentDate = new Date(now.getFullYear(), v.month - 1, v.day, v.hour);
            var durms = v.duration * 3600000;
            console.log(now, currentDate, (now - currentDate) / 3600000);
            var rg = now - currentDate;
            return rg <= durms && rg >= 0;
            }).map(v => v.compliments);
            var caholic = catholicDate(now.getFullYear());
            var ortodox = orthodoxDate(now.getFullYear());
            if (caholic.getMonth() == now.getMonth() && caholic.getDate() == now.getDate())
            result.push("С католической пасхой!");
            if (ortodox.getMonth() == now.getMonth() && ortodox.getDate() == now.getDate())
            result.push("С православной пасхой!");
            
            var radunitsa = new Date(ortodox);
            radunitsa.setDate(radunitsa.getDate() + 9);
            if (radunitsa.getMonth() == now.getMonth() && radunitsa.getDate() == now.getDate())
            result.push("С радуницей !");
            
            var trinity = new Date(ortodox);
            trinity.setDate(trinity.getDate() + 49);
            if (trinity.getMonth() == now.getMonth() && trinity.getDate() == now.getDate())
            result.push("С троицей!");
            return result;
        }
 
        var actualCompliments = getActualCompliments();
        console.log(actualCompliments);
        if (actualCompliments.length > 0)
        {
            var hollyday = document.getElementById("hollyday");
            hollyday.style.display = "block";
            for (var c of actualCompliments)
            {
                var div = document.createElement("div");
                hollyday.appendChild(div);
                div.innerHTML = c;
            }
        }
        function foo(month, day, compliment, hour = 0)
        {
            return { month: month, day: day, hour: hour, compliment: compliment }
        }
 
        var now9 = new Date();
        now9.setDate(now9.getDate() + 9);
        console.log(now9);
        
        var now49 = new Date();
        now49.setDate(now49.getDate() + 49);
        console.log(now49);
    </script>
</body>
</html>
поскольку в каждом месяце достаточно много событий, возможно ли их отсортировать по месяцам? что-бы работало без всяких (month, day, hour, duration)

что-то типа этого

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var fixDates = {
    '1': {
        '1': {'compliments': 'С новым годом !'},
        '7': {'compliments': 'С рождеством !'} },
        // {'compliments': 'какой-то текс/картинка'}
        // может не иметь других параметров
        // или может иметь один или два дополнительных параметра
        // {'start': (0), 'compliments': 'какой-то текс/картинка'}
        // {'duration': (0), 'compliments': 'какой-то текс/картинка'}
        // {'stop': (0), 'compliments': 'какой-то текс/картинка'}
        // или два
        // {'start': (0), 'duration': (0), 'compliments': 'какой-то текс/картинка'}
        // {'start': (0), 'stop': (0), 'compliments': 'какой-то текс/картинка'}
        // все три дополнительных параметра (start, duration, stop) могут принимать значечения
        // (00) только часы
        // (00:00) часы минуты
        // (00:00:00) часы минуты секунды
    '2': {
        '23': {'compliments': 'С 23 февраля !'} },
    '3': {
        '8': {'compliments': 'С 8 марта !'} },
    '4': {
        '12': {'compliments': 'С 12 апреля, днём космонавтики !'} },
    '5': {
        '1': {'compliments': 'С 1 мая !'},
        '9': {'С 9 мая !'} },
    '6': {
        '1': {'compliments': 'С 1 июня, Всемирным днём родителей !'} },
    '7': {
        '3': {'compliments': '3 июля, день независимости Республики Беларусь !'} },
    '8': {
        '12': {'12 августа международный день молодёжи !'} },
    '9': {
        '1': {'compliments': '1 сентября, день знаний !'} },
    '10': {
        '1': {'compliments': '1 октября, международный день пожилых людей !'} },
    '11': {
        '7': {'compliments': '7 ноября, день октябрьской революции !'} },
    '12': {
        '25': {'compliments': 'С католическим рождеством !'} }
}
надеюсь что понятен замысел...

Добавлено через 4 часа 14 минут
народ, помогите доделать скрипт из 13 поста...
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
07.05.2021, 02:40  [ТС]
цель этого скрипта, вывести поздравление с гос.праздниками трёх стран (Россия, Украина, Беларусь), и с днём рождения пользователей сайта, поэтому в принципе указывать час начала события и продолжительность не обязательно, получается много дублирующего кода, но для различных экстренных ситуаций должна быть возможность установить время начала и окончания события если событие длится в течении одних суток (start и stop), или начало и продолжительность (start и duration), если событие длится двое суток и более...

поскольку поздравлений с днём рождения достаточно много, то опять получается очень много дублирующего кода, (месяц, дата, час), поэтому намного будет создать список месяцев, а потом список дат когда есть событие, так значительно уменьшится количество ненужного кода, и проще ориентироваться, добавлен ли пользователь в список, и не даст возможность дважды вывести одно и тоже поздравление...
0
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
07.05.2021, 13:46
Блондинка йа, cms вам нужно сделать. Один раз и навсегда.
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
07.05.2021, 15:58  [ТС]
Tavashi, мне нужно массив сделать с месяцами, а потом уже массивы дат в каждом месяце, в скрипте из 13 поста...
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
08.05.2021, 09:51  [ТС]
как в первом посте темы изменить 34 строку скрипта если в 6 строке указан ид а не класс в стилях?
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
08.05.2021, 10:13
Цитата Сообщение от Блондинка йа Посмотреть сообщение
если в 6 строке указан ид а не класс в стилях?
JavaScript
1
2
3
4
5
6
7
let b = document.getElementById("holiday");
if (!b) {
  b = document.createElement("div");
  b.id = "holiday";
}
b.innerHTML = m.compliments;
document.querySelector("body").appendChild(b);
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
08.05.2021, 14:46  [ТС]
DrType,
а не подскажешь как в этом скрипте
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style>
#holiday {
    background: hsl(0,0%,90%);
    color: hsl(340,100%,50%);
    font: bold 24px/20px serif;
    text-align: center;
    padding: 15px 0;
    border: 1px solid hsl(0,0%,50%);
    border-radius: 12px/9px;
}
</style>
</head>
<body>
<div id="header">
    <div id="logo"></div>
    <div id="block_time-data"></div>
    </div>
    <div id="hollyday">
    </div>
<script type="text/javascript">
var holidays = {
    '1': {
        '1': {'start': 0, 'duration': 24, 'compliments': 'С новым годом !'},
        '7': {'start': 0, 'duration': 24, 'compliments': 'С рождеством !'} },
    '2': {
        '23': {'start': 0, 'duration': 24, 'compliments': 'С 23 февраля !'} },
    '3': {
        '8': {'start': 0, 'duration': 12, 'compliments': 'С 8 марта !'} },
    '4': {
        '12': {'start': 0, 'duration': 12, 'compliments': 'С днём космонавтики !'} },
    '5': {
        '1': {'start': 0, 'duration': 12, 'compliments': 'С 1 мая !'},
        '9': {'start': 0, 'duration': 24, 'compliments': 'С 9 мая !'} },
    '6': {
        '1': {'start': 0, 'duration': 24, 'compliments': 'С 1 июня, Всемирным днём родителей !'} },
    '7': {
        '3': {'start': 0, 'duration': 24, 'compliments': '3 июля, день независимости Республики Беларусь !'} },
    '8': {
        '12': {'start': 0, 'duration': 24, 'compliments': '12 августа международный день молодёжи !'} },
    '9': {
        '1': {'start': 0, 'duration': 24, 'compliments': '1 сентября, день знаний !'} },
    '10': {
        '1': {'start': 0, 'duration': 24, 'compliments': '1 октября, международный день пожилых людей !'} },
    '11': {
        '7': {'start': 0, 'duration': 24, 'compliments': '7 ноября, день октябрьской революции !'} },
    '12': {
        '25': {'start': 0, 'duration': 24, 'compliments': 'С католическим рождеством !'} }
}, d = new Date( "9 May 2021 23:59:59:001" ), m;
 
if((m = holidays[d.getMonth()+1]) && m[d.getDate()]) {
    //можно записывать в сессионное хранилище условие (метку окончания показа)
    //и проверяя ее в ней, если она есть, сразу отображаем поздравление и запускаем таймер окончания
    //в противном случае запускаем таймер сканирующий время на соответствие началу старта поздравления
    //и при этом событии пишем метку окончания в сессию
    //конечное сравнение для старта, это
    m = m[d.getDate()];
    if(d.getHours()>=m.start) {
        var b = document.getElementById("holiday");
        if (!b) { b = document.createElement("div");
        b.id = "holiday"; }
        b.innerHTML = m.compliments; document.querySelector("body").appendChild(b);
    }  
}
</script>
</body>
</html>
сделать чтобы блок просто менял значения свойства display, c none на block ?

Добавлено через 39 минут
если в 52 строке установить текущее время, new Date() то если сегодня нету событий, на странице отображается пустой блок, с фоном рамкой и другими свойствами стиля, как сделать блок невидимым ?
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
08.05.2021, 15:24
JavaScript
54
55
56
57
58
59
60
61
62
63
64
65
66
67
if ((m = holidays[d.getMonth() + 1])) {
  m = m[d.getDate() - 1];
  if (m) {
    if (d.getHours() >= m.start) {
      var b = document.getElementById("holiday");
      if (!b) {
        b = document.createElement("div");
        b.id = "holiday";
      }
      b.innerHTML = m.compliments;
      document.querySelector("body").appendChild(b);
    }
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.05.2021, 15:24
Помогаю со студенческими работами здесь

Как задать функцию другим выражением без расчета в уравнении?
Предположим, что есть уравнение y:= a*x + Int(z*x, x) Где z := T + ln(x) Я хочу задать функцию z , но что бы в уравнении у меня...

Как вставить функцию?
Нужно вывести номер столбца в котором все числа нечетные. Программа может вывести только один номер, если в матрице не 1 столбец с...

как в функцию отправки писем вставить цикл
Добрый день! подскажите как в функцию отправки писем вставить цикл. У меня он не работает. Письмо приходит но цикл не выводится ...

Подскажите как вставить в функцию данные из матрицы
Добрый день, подскажите пожалуйста как вставить в функцию данные из матрицы... Ранее я построил функцию с дискретной переменной, сейчас...

Функция ввода повторяется два раза. Как сделать так,чтобы введённая переменная v попадала в функцию расчета?
/*Написать программу, функция main которой включает вызов 3х функций: - 1-я функция осуществляет ввод исходных данных; - 2-я функция...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru