Autor Zpráva
vodys
Profil
Dobrý den.
Poptávám nejspíš jednoduchý script, který má v časech 10-11h dopoledne a 14-15h odpoledne zobrazovat text.

Pokud nebude zrovna daný čas, vyobrazí se pouze text "Zde není nic k zobrazení".

Hledal jsem skrze celým internetem, ale neporadil jsem si.
Byl by někdo prosím ochotný?
T-fon
Profil
Takhle nějak by to mělo jít:
function showText() {
      var currentTime = new Date().getHours();
      if (currentTime == 10 || currentTime == 14) {
       ...
      }
      ...
}
vodys
Profil
Bylo by možné celý funkční kód prosím?
Vzhledem k mé neznalosti js se mi nedaří zfunkčnit kód. :/
T-fon
Profil
Tak to už pak záleží kde a jak to chceš vypisovat. Když budeš mít na stránce nějaký element s id, tak třeba takhle:
        function showText() {
            var currentTime = new Date().getHours();
            if (currentTime === 10 || currentTime === 14) {
                document.getElementById("id").innerText = "Nějaký text";
            } else {
                document.getElementById("id").innerText = "Zde není nic k zobrazení";
            }
        }
        showText();
vodys
Profil
Super. Funguje jak má, děkuji ti! :)
Ještě drobnost.. Jak toto nezobrazovat o víkendu?
T-fon
Profil
Je to stejnej princip. Dáš podmínku jestli není sobota nebo neděle a pokud je splněno, uvnitř podmínky budeš mít ten script s výpisem textů.
var weekDay = new Date().getDay();
if (weekDay !== 6 || weekDay !== 0) {
    ...
}
Kajman
Profil
T-fon:
není sobota nebo neděle

Je potřeba to zapsat jako "není sobota a není neděle".
weekDay !== 6 && weekDay !== 0
T-fon
Profil
No jo, pravda. Já si to v consoli testnul jako === a tam je správně OR. A pak jsem to tady změnil na negaci...
vodys
Profil
<body>
<div class="text">
<div id="volat"></div>
<div id="nevolat"></div>
</div>
<script type="text/javascript">
        function showText() {
            var currentTime = new Date().getHours();
            if (currentTime === 10 || currentTime === 11) {
                document.getElementById("volat").innerHTML = "Telefonický kontakt je možný vždy od <b>10:00 - 11:00</b> dopoledne a <b>14:00 - 15:00</b> odpoledne.<br /><br /><b>TEL:</b>&nbsp;&nbsp; +420 583 034 ***<br /><b>MOB:</b> +420 737 171 ***<br /><br /><b>Těšíme se na Vás!</b>";
            }
        else if (currentTime === 14 || currentTime === 15) {
                document.getElementById("volat").innerHTML = "Telefonický kontakt je možný vždy od <b>10:00 - 11:00</b> dopoledne a <b>14:00 - 15:00</b> odpoledne.<br /><br /><b>TEL:</b>&nbsp;&nbsp; +420 583 034 ***<br /><b>MOB:</b> +420 737 171 ***<br /><br /><b>Těšíme se na Vás!</b>";
            }
         else {
                document.getElementById("nevolat").innerHTML = "Telefonický kontakt je možný vždy od <b>10:00 - 11:00</b> dopoledne a <b>14:00 - 15:00</b> odpoledne.<br /><b>V této chvíli odpovídáme pouze na emaily, které nám zasíláte na <a style='color:#c44c2d;' href='mailto@email.cz'>info@email.cz</a></span></b><br />nebo přes kontaktní formulář.";
            }
        }
        showText();
</script>

Je to takhle správně?
Kód mi docela buguje.. Pravdou je že v 10:00 se změní text, ale v 11:00 už se nevrátí zpět.

Zároveň bych poprostil zakomponovat do kódu i ty víkendy, kdy bude vystupovat pouze id="nevolat"..

Děkuji mnohokrát!
Mlocik97m
Profil *
Vrati sa späť po refreshi, ak chceš zmenu textu bez refreshe, je nuto poižít two way data binding. Inak je to hnus ten kod hore.
vodys
Profil
Stačí až po refreshi .. Problém je, že se nevrátí ani po něm .. Ani po 15ti minutách refreshů ..
Mlocik97m
Profil *
To už je zrejme problém cashovania.


skúšali ste aj tvrdý refresh? Ctrl + Shift + R


ježiši, vy ste tam pridali toto (currentTime === 10 || currentTime === 11) jasné že to nejde... tým ste stránke povedali ať ten text zobrazuje v čase 10:xx:xx alebo 11:xx:xx čož je i čas 11:59:59
T-fon
Profil
Mlocik97m:
skúšali ste aj tvrdý refresh? Ctrl + Shift + R
Tato kombinace nefunguje ve všech prohlížečích, univerzálně je to CTRL+F5.
Mlocik97m
Profil *
má to byť jak je to hore len (currentTime === 10 || currentTime === 14)


function showText() {
            var currentTime = new Date().getHours();
            if (currentTime === 10 || currentTime === 14) {
                document.getElementById("volat").innerHTML = "Telefonický kontakt je možný vždy od <b>10:00 - 11:00</b> dopoledne a <b>14:00 - 15:00</b> odpoledne.<br /><br /><b>TEL:</b>&nbsp;&nbsp; +420 583 034 ***<br /><b>MOB:</b> +420 737 171 ***<br /><br /><b>Těšíme se na Vás!</b>";
            }
         else {
                document.getElementById("nevolat").innerHTML = "Telefonický kontakt je možný vždy od <b>10:00 - 11:00</b> dopoledne a <b>14:00 - 15:00</b> odpoledne.<br /><b>V této chvíli odpovídáme pouze na emaily, které nám zasíláte na <a style='color:#c44c2d;' href='mailto@email.cz'>info@email.cz</a></span></b><br />nebo přes kontaktní formulář.";
            }
        }
        showText();
vodys
Profil
Mlocik97m:
ježiši, vy ste tam pridali toto (currentTime === 10 || currentTime === 11) jasné že to nejde... tým ste stránke povedali ať ten text zobrazuje v čase 10:xx:xx alebo 11:xx:xx čož je i čas 11:59:59

Nechci aby se to zobrazovalo buď v čase 10:xx:xx nebo v čase 11:xx:xx, ale od 10:00 do 11:00

má to byť jak je to hore len (currentTime === 10 || currentTime === 14)

Nějak nevidím co se v kódu změnilo.. Asi jsem slepej.

Díky za odpověď :)
Keeehi
Profil
Mlocik97m:
To už je zrejme problém cashovania.
To není ten případ. Kód ze serveru je stále stejný. A provádění javascriptových funkcí nemá s keší nic společného.

vodys:
Zkus jim vysvětlit, že to co chtějí není uživatelsky přívětivé. Například zapomněli na tuto situaci: Jsem doma a je 8:00. Podívám se na stránky a vidím, že jim mohu zavolat v 10 hodin. Takže si chci uložit číslo abych jim mohl v 10, až budu ve městě zavolat. Jenže číslo si uložit nemohu, jelikož tam není a ve městě mezi nákupy přístup k internetu prostě nemám.
Je mi jasné že to chtějí proto, aby je nikdo v ostatní hodiny neotravoval. Jenže to jim taky nevyjde. Když už se k tomu číslu jednou někdo dostane tak si ho může uložit a stejně jim volat kdy se mu zlíbí.

Takže než implementovat tuto zhůvěřilost by jsi jim měl poradit, ať si pořídí odpovědní automat který v určených časech bude odpovídat na všechny hovory hláškou ve stylu: "Omlouváme se, ale nyní nemůžeme odpovědět na Váš telefonát. Ozveme se v *** mezi *** a *** hodinou. Děkujeme." Místo hvězdiček je samozřejmě nejbližší možný den a hodina vzhledem k aktuálnímu času.
Takové řešení mi přijde jako nejvíce uživatelsky přívětivé.
Mlocik97m
Profil *
10:xx:xx = 10:00:00 až 10:59:59


vodys:
zmenili sa inak if-else statementy
vodys
Profil
Keeehi:
Bohužel - někdy to prostě vysvětlit nejde.
Tohle je nejlevnější varianta a dle úvahy to obrátí lidi směrem na email.

Uvidíme no.. Kdyby na mě bylo, už je zřízen automat ..

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0