Autor | Zpráva | ||
---|---|---|---|
danihel Profil |
#1 · Zasláno: 27. 1. 2010, 13:43:12
Mam dva rovnake odkazy medzi ktorymi je obsah stranky a potreboval by som aby sa ukazanim mysou nad ktorymkolvek z tych odkazov aktivovali :hover stadia obidvoch.
Nevie mi niekto poradit, ci sa v javascripte da nieco take spravit? |
||
pavuk Profil |
#2 · Zasláno: 27. 1. 2010, 14:34:10 · Upravil/a: pavuk
Nevím přesně co máš na mysli, možná použití více tříd?
|
||
danihel Profil |
#3 · Zasláno: 27. 1. 2010, 15:57:23
potrebujem jednoducho spravit, ked prejdem mysou nad jednym odkazom, aby sa rovnako vysvietil aj druhy, akokeby boli dva kurzory mysi naraz na oboch odkazoch
|
||
Witiko Profil * |
#4 · Zasláno: 27. 1. 2010, 16:30:39
Na to budeš potřebovat javascript. Na :hover bych se v tomhle případě úplně vykašlal a na dané odkazy připojil mouseover event který změní třídy. Ukázka:
V CSS definujeme odkaz a odkaz_mouseover <a href="..." id="odkaz1" name="odkazy" onmouseover="for(var a in document.getElementsByName('odkazy')) document.getElementsByName('odkazy')[a].className='odkaz_mouseover';" onmouseout="for(var a in document.getElementsByName('odkazy')) document.getElementsByName('odkazy')[a].className='odkaz';">Bla 1</a> <a href="..." id="odkaz2" name="odkazy" onmouseover="for(var a in document.getElementsByName('odkazy')) document.getElementsByName('odkazy')[a].className='odkaz_mouseover';" onmouseout="for(var a in document.getElementsByName('odkazy')) document.getElementsByName('odkazy')[a].className='odkaz';">Bla 2</a> |
||
Witiko Profil * |
#5 · Zasláno: 27. 1. 2010, 16:31:26
+ ten for cyklus uzavřít do {}
|
||
Chamurappi Profil |
#6 · Zasláno: 27. 1. 2010, 16:39:42
Reaguji na danihla:
Nastav při onmouseover třídu společnému rodiči a při onmouseout ji zruš. V CSS pak zaměř odkazy přes dotyčnou třídu. |
||
danihel Profil |
#7 · Zasláno: 27. 1. 2010, 17:14:06
Witiko super dik moc funguje to
stale neviem nejak tym javascriptom pochopit, najprv som sa pokusal o nieco podobne a nefungovalo to, asi to je totalna lamovina, ale moze mi niekto vysvetlit co som tam robil zle? window.onload = hover; function hover(){ var link_one = document.getElementById("jeden"); var link_two = document.getElementById("dva"); link_one.onmouseover = linkOver(link_one, link_two); link_two.onmouseover = linkOver(link_one, link_two); link_one.onmouseout = linkOut(link_one, link_two); link_two.onmouseout = linkOut(link_one, link_two); function linkOver(one, two){ one.className = "tri"; two.className = "tri"; } function linkOut(one, two){ one.className = "jeden"; two.className = "dva"; } } |
||
Chamurappi Profil |
#8 · Zasláno: 27. 1. 2010, 17:24:06 · Upravil/a: Chamurappi
Reaguji na danihla:
„Witiko super dik moc funguje to“ Nefunguje to v Internet Exploreru. „moze mi niekto vysvetlit co som tam robil zle?“ Přiřazoval jsi k událostem výsledky funkcí linkOver a linkOut (tedy undefined). Pokud bys chtěl přiřadit volání funkcí s argumenty, musel bys přiřadit funkci obsahující toto volání, tedy třeba nějak takhle: link_one.onmouseover = function() { linkOver(link_one, link_two); }; Reaguji na Witika: Proč používáš smyčku for-in na kolekci elementů? To nedává moc smysl, stejně jako na polích. |
||
danihel Profil |
#9 · Zasláno: 27. 1. 2010, 19:05:33
Chamurappi dik tak to funguje,
ak som tomu spravne pochopil nemozem na .onmouseover/out volat funkciu a zadavat do nej premenne? |
||
Witiko Profil * |
#10 · Zasláno: 28. 1. 2010, 18:19:22
Nepřipojioval jsi funkci, rovnou jsi danou funkci volal a přiřazoval místo funkce návratovou hodnotu funkce (v tomhle případě undefined). Pokud chceš připojit javascriptem k eventu funkci, musíš jí obalit do anonymní funkce. Viz.:
Nefunguje: var a = alert("Ahoj"); a(); Funguje: var a = function() {alert("Ahoj");} a(); Případně je možné se zápisu pomocí anonymní funkci vyhnout, pokud připojovaná funkce nevyžaduje žádné atributy: var a = alert; a(); Chamurappi: Pravda, už jsem byl trochu unavený, chtěl jsem napsat normální for smyčku. |
||
Witiko Profil * |
#11 · Zasláno: 28. 1. 2010, 18:22:38
*V tomhle případě by bylo možné přiřadit atributy až při volání
var a = alert; a("Ahoj"); to v tvém připadě možné není, protože event nevoláš ručně. |
||
Časová prodleva: 14 let
|
0