| 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: 17 let
|
|||
0