Показать сообщение отдельно
  #7 (permalink)  
Старый 08.03.2019, 07:58
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Блондинка
Не знаю правильно ли это
А вы как думаете? Только и остается сказать спасибо, что не каждый день праздник.

Ну я вам о чем рассказывал? Ну ежику же понятно, что ваш код расточителен. Вот так упрощенно (не буду я таймеров запускать и прочего делать), код должен не конкретное в куче условий проверять, а брать для проверки параметры описанные объектом для всех праздников, по одним и тем же правилам.

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style>
.holiday {
    text-align: center;
}
</style>
</head>
<body>
<script type="text/javascript">
var holidays = {
    '3': {
        '8': {'start': 8, 'duration': 12, 'compliments': '<img src="https://s0.tchkcdn.com/g-lScF7M4CSF9uPeXq54QRNw/4/22014/640x640/w/0/792c2e17f080c8b4461a3467a34bdf9e_398733855.jpg">'},
        '9': {'start': 12, 'duration': 2, 'compliments': 'Поздравление с Днем счастливых!'}    
    }
}, 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>


Код выполняющий объект описатель праздников никак не должен изменяться при добавлении новых праздников, удалении и прочем. Вы же пишите как поете о том, что вижу. Ну также нельзя подходить к решению задач.

PS. И да, если под Блондинкой действительно женщина, то с праздником!

Последний раз редактировалось laimas, 08.03.2019 в 08:43.
Ответить с цитированием