Autor Zpráva
FAMUL
Profil *
Zdravím, měl bych jeden dotaz. Je možné, abych zadal někam časy od kdy do kdy se bude zobrazovat určitý text a on by se pak ukazoval? Chtěl bych něco, co by šlo bez problému dát do Drupalu
smitka
Profil
Pokud nevadí, že bude text na stránce stále dostupný, jen nebude vidět, tak to lze jednoduše pomocí javascriptu:

jsfiddle.net/arhmq52o

Jen je potřeba při tomto zápisu dát pozor na měsíc (2. parametr Date), protože se čísluje od nuly: 0 = leden, 9 = říjen.

Čas se takto bere od 0:00, takže druhý datum je ten, kdy se to již nezobrazí.
FAMUL
Profil *
Chtěl bych něco na podobný způsob, ale abych jen vyplnil dny v týdnu a čas od kdy do kdy a ono by se to periodicky opakovalo.
Chci
Profil *
Taki bysem chtel ňeco podobnýho
juriad
Profil
Chci:
FAMULE, FAMULE. Co třeba zpřesnit otázku než se vydávat za někoho jiného?
Jak ta periodicita má fungovat (má být týdení, měsíční)? Má k tomu být nějaké rozhraní pro administrátora? Může být několik intervalů v jeden den? Chceš to řešit na straně serveru (v Drupalu) nebo u klienta (v JS)?
Drupal moc lidí nezná, takže proto ti asi nikdo neodpovídá.
FAMUL
Profil *
Chtěl bych to řešit přes JS a perioda by byla týdenní.

Chtěl bych aby vždy

v pondělí od 12:20 do 14:00 byl text Okno
v úterý od 12:00 do 15:00 Dveře, od 15:00 do 16:00 skříň, od 16:00 do 17:00 postel, od 17:00 do 20:00 postel
ve středu (viz pondělí)
ve čtvrtek od 12:00 do 16:00 Podlaha, od 16:00 do 17:00 Krb, od 17:00 do 18:00 Klika

Ve zbytku času by bylo uvedeno: Nic na akci

Bez rozhraní pro admina
smitka
Profil
Lze na to jit nejak podobne:

jsfiddle.net/bdxshncj
FAMUL
Profil *
Děkuji mnohokrát, script už běží a je nastaven :)


Ale nefunguje v Mozille Firefox
smitka
Profil
To už je problematika kompatibility prohlížečů - pro nové prohlížeče je dobré nahradit innerText za textContent, ten ale zase nefunguje ve starších IE. Prakticky všude funguje innerHTML, ale ten při nevhodném použití může představovat bezpečnostní riziko. Při použití nějakého frameworku typu jQuery lze použít jeho funkce, které nekompatibilitu řeší.

Ručně to lze vyřešit například testem, zda textContent existuje:

if (typeof document.getElementById("spravny_cas").textContent !== "undefined") {
    document.getElementById("spravny_cas").textContent = text;
}
else {
    document.getElementById("spravny_cas").innerText = text;
}


Porovnání podporovaných vlastností je na:
quirksmode.org/dom/html
juriad
Profil
smitka:
A proč nepoužít vlastnost innerHTML, která funguje všude? V tomto případě ani text neobsahuje nic, co by vyžadovalo speciální zacházení.
Keeehi
Profil
Ještě se dá vytvořit text node a ten vložit do #spravny_cas.
smitka
Profil
juriad:
já se obecně innerHtml bojím, dnes to může být jen text, zítra se do něj dá část řetězce z URL a problém je na světě.

Uznávám, že jsem innerText poradil vcelku blbě, protože je to hlavně IE věc, řešil jsem hlavně princip rozhodnutí co se má zobrazit než samotné zobrazení...


Keeehi:
Ještě se dá vytvořit text node

Toto řešení se mi líbí

var node = document.createTextNode(text);
document.getElementById("spravny_cas").appendChild(node); 
Dotaz
Profil *
Neumím si z toho nic vzít, jak použít ten kód?


Už jsem to dal do kupy a jede, díky moc :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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