Firefox a JavaScript
Ano, Firefox je opravdu asi nejlepší prohlížeč, zabezpečení a dodržování standardů na úrovni (narozdíl od IE), ale nějak nevím proč v něm nefunguje tohle:
neco.style.display = "block"
Chápu, asi to není správně, ale tohle:
document.getElementById("neco").style.displ ay = "block"
nefungovalo jak ve Firefoxu, tak v IE a Opeře (narozdíl od předchozího řešení).
Zkoušel jsem i if ( document.getElementById ) document.getElementById("neco")..., avšak opět žádný výsledek. Konzola javascriptu - neco is not defined. Javascript je sice opravdu na ho... - www.tvorba-webu.cz/javascript/javascript_je_na_hovn o.php, ale vysouvací menu asi jinak neuděláte.
Díky
K elementom sa pristupuje vždy cez document.getElementById, nie priamo cez id (teda ak chceš, aby to fungovalo v normálnych prehliadačoch). Je na tej stránke element, ktorý ma nastavený atribút id="neco"? Keď to nastavuješ, je už ten element nahraný? Chcelo by to odkaz na stránky, kde to nefunguje...
Vysúvacie menu sa dá spraviť s použitím CSS, pričom pre IE sa použije expression alebo behavior.
JavaScript je na hovno pre tých, ktorí ho neovládajú .
edit: Keď si zmenil ten kód na document.getElementById, tak v konzole nemohlo byť "neco is not defined" - načítal sa zmenený kód? Ak nie, tak daj Ctrl+F5.
Během pár dnů pošlu adresu kde to bude...díky moc
tak teda zde:
vadne
Přes js moc znalý nejsem... tak každá rada dobrá.
Nestihl jsem to nijak nachystat, takže je to celej web.
Díky
Hlavu vzhůru. Pracuješ tam s nedefinovanými proměnnými.
To je celý problém.
Sleduji, vypadá, že špatně se snažíš přistupovat k prvkům právě přes to ID jak naznačil výše los.
ldm_leas není nikde definovaná proměnná.
ldm_leas je pouze identifikátor na který jsi zapomněl a zaměnil jej za proměnnou (vypadá to tak).
Protože ldm_leas identifikuje celý odstaveček (div) nemusíš zakrývat jeho podprvky. Stačí pokud tomuto prvku
nastavíš invisible = "none" a on už si zakryje všechny své "podprvky".
Tedy pokud nechceš výběrově skrývat jen některé jeho podprvky .
Nema nahodou to "DivID" byt bez uvodzoviek, nie je to premenna? (P.S. mam na mysli v tom subore menu.js).
P.S. a uvodzovky nemaju byt nahodou pri tom volani showMenu, t.j. showMenu("ldm_leas", ..., "aldm1")? Moc dopodrobna som ti to ale nepozeral takze brat s rezervou...
Najjednoduchšie pre túto chvíľu je opraviť chyby, ktoré tam sú. Z dlhodobého pohľadu by bolo lepšie premyslieť a napísať celé menu odznova.
K elementu, ktorého id je v premennej elementId sa nepristupuje takto:
ale má to byť takto:
Naopak, keď posielaš id do funkcie ako reťazec, tak ten má byť v úvodzovkách. V HTML kóde musíš prepísať volanie showMenu tak, aby bol prvý a tretí argument v úvodzovkách nejako takto:
Máš tam premennú divID, ktorá je globálna a nemusela by tam byť. Asi si tým chcel riešiť poslanie argumentu do funkcie volanú cez setTimeout, ale to sa dá spraviť jednoduchšie tak, že ten argument pošleš ako tretí argument priamo do funkcie setTimeout. Všetky ďalšie argument funkcie setTimeout sa totiž pošlú funkcii, ktorú setTimeout volá. Čiže napr. funkciu showMenu by som prepísal takto:
edit: teraz vidím, že pomocou toho globálneho divID ošetruješ ešte aj niečo iné, takže aby bol tento kód ekvivalentný tomu Tvojmu, tak ten div v riadku "var div = ..." bude predsa len globálnou premennou.
Inicializuješ polia dosť krkolomným spôsobom, pritom môžeš použiť lepší zápis.
Ja by som to ale ani takto nerobil, pretože pri zmene menu budeš musieť meniť aj JavaScript.