Сообщение от voraa
|
Можно. Только все тексты поздравлений в compliments должны иметь вид <span class="класс"> Текст </span>
Тогда строки 167-171 так
for (const cl of ['public_holiday', 'holiday', 'birthday']) {
for (var c of actualCompliments) {
if (c.indexof('class="'+cl+'"') {
const div = document.createElement("div");
hollyday.appendChild(div);
div.innerHTML = c;
}
}
}
|
блин, ниХфига не получается
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
body {
margin: 0;
padding: 0;
}
#holiday {
display: none;
background: hsl(0, 0%, 90%);
border: 1px solid hsl(0, 0%, 50%);
border-radius: 12px/9px;
}
.public_holiday {
color: hsl(340, 100%, 50%);
}
.holiday {
color: hsl(210, 100%, 50%);
}
.birthday {
color: hsl(120, 100%, 25%);
}
#holiday,
.public_holiday,
.holiday,
.birthday {
display: block;
font: bold 24px/20px serif;
text-align: center;
padding: 15px 20px;
}
</style>
</head>
<body>
<div id="header">
<div id="logo"></div>
<div id="block_time-data"></div>
</div>
<div id="holiday"></div>
<script>
var holidays = [
{
1: { start: 0, duration: 24, compliments: "С новым годом !" },
7: { start: 0, duration: 24, compliments: "С рождеством !" },
},
{
23: { start: 0, duration: 24, compliments: "С 23 февраля !" },
},
{
8: { start: 0, duration: 24, compliments: "С 8 марта !" },
},
{ 12: { start: 0, duration: 24, compliments: "С днём космонавтики !" }, },
{
1: { start: 0, duration: 24, compliments: "С 1 мая !" },
2: { start: 0, duration: 24, compliments: [
'<span class="birthday">С ДНЮХОЙ !</span>',
'<span class="holiday">С 2 мая !</span>',
], },
// '2': {'start': 0, 'duration': 24, 'compliments': '<span class="holiday">С 2 мая !</span>'},
9: { start: 0, duration: 24, compliments: "С 9 мая !" },
},
{
1: { start: 0, duration: 24, compliments: "С 1 июня, Всемирным днём родителей !", },
},
{
3: { start: 0, duration: 24, compliments: "3 июля, день независимости Республики Беларусь !", },
},
{
12: {start: 0, duration: 24, compliments: "12 августа международный день молодёжи !", }, },
{ 1: { start: 0, duration: 24, compliments: "1 сентября, день знаний !" }, },
{
1: { start: 0, duration: 24, compliments: "1 октября, международный день пожилых людей !", }, },
{
7: { start: 0, duration: 24, compliments: "7 ноября, день октябрьской революции !", }, },
{ 25: { start: 0, duration: 24, compliments: "С католическим рождеством !" }, },
];
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);
}
const today = new Date("2 May 2021 00:00:00:001"); // d = new Date( "9 May 2021 00:00:00:001" )
function getActualCompliments(now) {
// var now = new Date( "2 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 = holidays.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);
*/
const result = [];
holidays.forEach((vm, month) => {
for (const day in vm) {
const hld = vm[day];
const currentDate = new Date(now.getFullYear(), month, +day, +hld.start);
const rg = now.getTime() - currentDate.getTime();
if (0 <= rg && rg < hld.duration * 3600000) {
let compl = hld.compliments;
if (!Array.isArray(compl)) compl = [compl];
result.push(...compl);
}
}
});
const caholic = catholicDate(now.getFullYear());
const 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("<span class='public_holiday'>С православной пасхой!</span>");
const radunitsa = new Date(ortodox);
radunitsa.setDate(radunitsa.getDate() + 9);
if (radunitsa.getMonth() == now.getMonth() && radunitsa.getDate() == now.getDate() )
result.push("С радуницей !");
const trinity = new Date(ortodox);
trinity.setDate(trinity.getDate() + 49);
if ( trinity.getMonth() == now.getMonth() && trinity.getDate() == now.getDate() )
result.push("С троицей!");
return result;
}
const actualCompliments = getActualCompliments(today);
console.log(actualCompliments);
if (actualCompliments.length > 0) {
const hollyday = document.getElementById("holiday");
hollyday.style.display = "block";
for (const cl of ['public_holiday', 'holiday', 'birthday']) {
for (var c of actualCompliments) {
if (c.indexof('class="'+cl+'"') {
const div = document.createElement("div");
hollyday.appendChild(div);
div.innerHTML = c;
}
}
}
</script>
<div id="footer"></div>
</body>
</html>
хз, что не так...