Wyświetlanie elementu o podanej godzinie w JavaScript

W dzisiejszych czasach dynamiczne interakcje na stronach internetowych to coś, czego użytkownicy po prostu oczekują. Jedną z takich interakcji może być wyświetlanie konkretnego elementu na stronie tylko o określonej godzinie. W tym artykule pokażę Ci, jak to zrobić w JavaScript — w prosty i zrozumiały sposób.

Gotowy? Zaczynamy!

Dlaczego warto wyświetlać element o określonej godzinie?

No dobra, może zastanawiasz się, po co w ogóle zawracać sobie głowę wyświetlaniem elementu o konkretnej godzinie? Oto kilka przykładów, gdzie taka funkcja może się przydać:

  1. Codzienne promocje: Chcesz wyświetlić baner promocyjny tylko od 9:00 do 12:00.
  2. Odliczanie do wydarzenia: Planujesz odblokować dostęp do transmisji live tylko o konkretnej godzinie.
  3. Dynamika strony: Możesz tworzyć efekty „wow”, ukrywając i pokazując treści w określonych godzinach.

Jak podejść do problemu?

Na szczęście JavaScript daje nam potężne narzędzia do zarządzania czasem, takie jak Date i setTimeout. Przyjrzyjmy się krok po kroku, jak rozwiązać problem.

Kod źródłowy — wyświetlanie elementu o podanej godzinie

1. Podstawowy pomysł

Na początek musimy stworzyć skrypt, który:

  1. Pobiera aktualną godzinę.
  2. Porównuje ją z godziną, o której chcemy wyświetlić element.
  3. Ukrywa element do tego momentu, a następnie go wyświetla.

2. Przykładowy kod

Oto prosty kod, który to realizuje:

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Wyświetlanie elementu o podanej godzinie</title>
    <style>
        #special-element {
            display: none; /* Domyślnie ukrywamy element */
            padding: 20px;
            background-color: #4caf50;
            color: white;
            text-align: center;
            font-size: 1.5rem;
        }
    </style>
</head>
<body>
    <div id="special-element">
        Surprise! To jest Twój element wyświetlany o podanej godzinie.
    </div>

    <script>
        // Funkcja wyświetlająca element o określonej godzinie
        function showElementAtTime(targetHour, targetMinute) {
            const now = new Date(); // Pobieramy aktualny czas
            const currentHour = now.getHours(); // Bieżąca godzina
            const currentMinute = now.getMinutes(); // Bieżąca minuta

            // Obliczamy, ile czasu zostało do podanej godziny
            const targetTime = new Date();
            targetTime.setHours(targetHour, targetMinute, 0, 0); // Ustawiamy celową godzinę i minutę
            const timeDifference = targetTime - now; // Różnica w milisekundach

            // Jeśli godzina już minęła, pokazujemy błąd (opcjonalnie)
            if (timeDifference < 0) {
                console.log("Godzina docelowa już minęła.");
                return;
            }

            // Ustawiamy timer
            setTimeout(() => {
                const element = document.getElementById('special-element');
                if (element) {
                    element.style.display = 'block'; // Wyświetlamy element
                }
            }, timeDifference);
        }

        // Wywołaj funkcję z docelową godziną (np. 15:30)
        showElementAtTime(15, 30);
    </script>
</body>
</html>

3. Jak działa ten kod?

  1. Ukrycie elementu: Na początku element jest ukryty dzięki display: none w CSS.
  2. Pobranie aktualnego czasu: Funkcja new Date() dostarcza bieżącą godzinę i minutę.
  3. Obliczenie różnicy: Porównujemy aktualny czas z docelowym, aby określić, ile milisekund musimy poczekać.
  4. Timer: Używamy setTimeout, aby pokazać element w odpowiednim momencie.

Rozszerzenia i modyfikacje

Okej, podstawę już mamy, ale co jeśli chcesz trochę więcej? Oto kilka pomysłów na rozbudowę:

1. Wyświetlanie w określonym przedziale czasu

Jeśli chcesz, aby element był widoczny tylko przez określony czas (np. między 9:00 a 12:00), możesz dodać dodatkową logikę:

function showElementBetweenTimes(startHour, startMinute, endHour, endMinute) {
    const now = new Date();
    const startTime = new Date();
    startTime.setHours(startHour, startMinute, 0, 0);

    const endTime = new Date();
    endTime.setHours(endHour, endMinute, 0, 0);

    if (now >= startTime && now <= endTime) {
        document.getElementById('special-element').style.display = 'block';
    } else {
        console.log("Poza przedziałem czasowym.");
    }
}

// Wywołaj funkcję (np. element widoczny od 9:00 do 12:00)
showElementBetweenTimes(9, 0, 12, 0);

2. Dynamiczny odliczanie czasu

Chcesz wyświetlić odliczanie do momentu, gdy element się pojawi? Dodaj licznik:

function countdownToTime(targetHour, targetMinute) {
    const interval = setInterval(() => {
        const now = new Date();
        const targetTime = new Date();
        targetTime.setHours(targetHour, targetMinute, 0, 0);

        const timeDifference = targetTime - now;

        if (timeDifference <= 0) {
            clearInterval(interval);
            document.getElementById('special-element').style.display = 'block';
            console.log("Czas minął!");
        } else {
            const seconds = Math.floor((timeDifference / 1000) % 60);
            const minutes = Math.floor((timeDifference / (1000 * 60)) % 60);
            const hours = Math.floor(timeDifference / (1000 * 60 * 60));

            console.log(`Pozostało: ${hours}h ${minutes}m ${seconds}s`);
        }
    }, 1000);
}

// Wywołaj funkcję z odliczaniem (np. do 15:30)
countdownToTime(15, 30);

Wyświetlanie elementu o określonej godzinie to nie tylko praktyczna, ale i ciekawa funkcjonalność, którą możesz dodać na swojej stronie. Niezależnie od tego, czy planujesz promocję, czy po prostu chcesz zaskoczyć użytkowników, kod napisany w JavaScript pomoże Ci to osiągnąć.

Pamiętaj, aby testować swój kod w różnych przypadkach i upewnić się, że działa zgodnie z oczekiwaniami. Teraz Twoja kolej — wypróbuj powyższe przykłady na swojej stronie i baw się dobrze!

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl