Autor Zpráva
Ostřa
Profil *
Jde nastavit více funkcí pro jednu událost jednoho prvku? Jaký je zápis?
Chamurappi
Profil
Reaguji na Ostřu:
Ano. Zápis je úplně stejný, jako když voláš více funkcí ve funkci.
Ostřa
Profil *
Třeba
<div onmouseover="this.className='class';alert('neco')">Text</div>

?
Chamurappi
Profil
Reaguji na Ostřu:
Třeba. Není jednodušší si to vyzkoušet, než se ptát?
Yur4Y
Profil
Nezabúdajte, že keď pripájate 'obsluhu' udalosti nie pomocou atribútu, ale v <script>e klasickou metódou:
objekt.onudalost = function() { ... }

Tak sa používa iba tá posledná, ostatné sa prepisujú. Čiže ak použijete niečo takéto:
objekt.onmouseover = function() {
	alert('foo')
}
objekt.onmouseover = function() {
	alert('bar')
}
Tak pri prechode myšou ponad element sa použije iba alert('bar'), keďže alert('foo') bolo prepísané.
Zato pri použití addEventListener:
objekt.addEventListener('mouseover', function() {
	alert('foo')
}, true)
objekt.addEventListener('mouseover', function() {
	alert('bar')
}, true)
Vám vybehnú 2 okienka - aj s textom foo, aj s textom bar. V tomto prípade sa udalosti neprepisujú. Akurát to nefunguje v IE.


(Snáď som nebol veľmi mimo témy)
Chamurappi
Profil
Reaguji na Yur4Y:
keď pripájate 'obsluhu' udalosti nie pomocou atribútu
Zjevně ji pomocí atributu připojuje.

Tak sa používa iba tá posledná, ostatné sa prepisujú.
Většinou není potřeba přiřazovat více navzájem nazávislých akcí k jedné události. A kdyby bylo, tak:
var puvodniMouseOver = objekt.onmouseover;
objekt.onmouseover = function(e)
{
  if(puvodniMouseOver) puvodniMouseOver.apply(this, e);
  alert("bar");
};
Můžu si navíc hrát s pořadím.
Škoda, že nejde funkce sčítat, objekt.onmouseover += function() {…} by bylo hezké.

Zato pri použití addEventListener […] Akurát to nefunguje v IE.
Řekl bych, že postupy, které běží všude, jsou životaschopnější.

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:

0