Autor Zpráva
danihel
Profil
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
Nevím přesně co máš na mysli, možná použití více tříd?
danihel
Profil
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 *
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 *
+ ten for cyklus uzavřít do {}
Chamurappi
Profil
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
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
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
Chamurappi dik tak to funguje,
ak som tomu spravne pochopil nemozem na .onmouseover/out volat funkciu a zadavat do nej premenne?
Witiko
Profil *
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 *
*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ě.

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: