Witam wszystkich, jestem tu nowy i uczę się programowania od kilku miesięcy. Jestem na etapie JavaScriptu. Mam problem z obiektem DATE. Stworzyłem poniższą funkcję żeby na stronie o odpowiedniej godzinie wyświetlał się odpowiedni komunikat:
const main = () => {
showWelcome();
};
const showWelcome = () => {
const textWelcome = document.querySelector('.text-hour');
const today = new Date();
const hourNow = today.getHours();
let greeting;
if (hourNow > 18) {
greeting = 'Dobry wieczór!';
} else if (hourNow > 12) {
greeting = 'Dzień dobry!';
} else if (hourNow > 0) {
greeting = 'Dzień dobry!';
} else {
greeting = 'Witam!';
}
textWelcome.textContent = greeting;
};
document.addEventListener('load', main);
Problem polega na tym że w podanym divie o klasie text-hour nie wyświetla się żądany komunikat tylko pustka jakby funkcja nie istniała. Wszystko działa tylko wtedy gdy nie umieszczę skryptu w funkcji tylko w zasięgu globalnym w ten sposób:
const textWelcome = document.querySelector('.text-hour');
const today = new Date();
const hourNow = today.getHours();
let greeting;
if (hourNow > 18) {
greeting = 'Dobry wieczór!';
} else if (hourNow > 12) {
greeting = 'Dzień dobry!';
} else if (hourNow > 0) {
greeting = 'Dzień dobry!';
} else {
greeting = 'Witam!';
}
textWelcome.textContent = greeting;
Jednak uważam to za mało profesjonalne, gdyż według mnie każdy skrypt powinien być opisany w funkcji no chyba, że się mylę więc proszę o sprostowanie.
Teraz pytanie czy praca z obiektem DATE jest możliwa tylko w zasięgu globalnym czy można w jakiś sposób umieszczać z nim skrypty w funkcjach i wywoływać wedle je według własnych wymagań? A może coś robię nie tak? Prosiłbym serdecznie o pomoc i wyrozumiałość. Pozdrawiam :)
OSTATNIA LINIJKA TO NASŁUCHIWACZ KTÓRY MA ODPALAĆ FUNKCJE DOPIERO PO ZAŁADOWANIU STRONY.