Autor | Zpráva | ||
---|---|---|---|
Dero Profil |
#1 · Zasláno: 11. 12. 2005, 21:53:46
Potřeboval bych několika elementům v dokumentu přiřadit funkci k nějaké události. Například pro všechny odkazy potřebuji přiřadit funkci, která něco udělá při najetí na odkaz. Mám tedy tento kód:
<a href="#" id="jedna">jedna</a> Potřebuji však, aby při najetí na odkaz "jedna" vypsal IE číslo 0 a při najetí na "dva" vypsal 1 (což je jejich pořadí v poli "o"). V současné době to však vypíše pokaždé hodnotu 2, což je konečná hodnota po projetí for cyklu. Jak tento problém jednoduše vyřešit? V chytrých prohlížečích to je snadné. Stačí nastavit atribut onmouseover takto: o[i].setAttribute("onmouseover", "alert("+i+");"); Díky, -- Dero |
||
ah01 Profil |
#2 · Zasláno: 11. 12. 2005, 23:49:01 · Upravil/a: ah01
a co takhle:
funguje v IE6, FF1.5 a Opeře 8 - jinde jsem to nezkoušel |
||
Chamurappi Profil |
#3 · Zasláno: 11. 12. 2005, 23:53:29
„V chytrých prohlížečích to je snadné“
V Exploreru se ten atribut také nastaví. Tak, jak má. Jen se pak nevyvolává jako funkce. Tobě však jde pouze o to, abys mohl funkci poskládat z řetězce, ne? S tím samotný JS počítá: o[i].onmouseover = new Function("alert("+i+")"); |
||
Dero Profil |
#4 · Zasláno: 12. 12. 2005, 00:21:48
Ano, tohle je řešení, nicméně jsem se v tomto příkladu dopustil zjednodušení.
Konkrétně potřebuji přiřadit události volání funkce. Této funkci předávám jako argumenty textové řetězce, čísla a jeden objekt. S textovými řetězci a čísly není potíž, mohu si složit funkci, která takovou funkci bude volat. Jak do toho však přimíchat onen objekt? |
||
Chamurappi Profil |
#5 · Zasláno: 12. 12. 2005, 00:37:41 · Upravil/a: Chamurappi
Reaguji na ah01:
Teď vypadám jako plagiátor :-) Reaguji na Dera: Tak přilep referenci na tvůj objekt k dotyčnému elementu. Nějak takto: for (i = 0; i < 2; i++) |
||
Oswald Profil |
#6 · Zasláno: 12. 12. 2005, 07:04:02 · Upravil/a: Oswald
[příště si nejdřív přečtu otázku, než odpovim na něco jinýho]
|
||
izsak Profil |
#7 · Zasláno: 12. 12. 2005, 08:29:45
function f(string, object)
{ ... } ... o[i].onmouseover = new Function("f('"+ string + "', object);"); Len musis zaistit, aby premená object bola viditeľná pre daný odkaz, čiže najjednoduchšie je ju spraviť globálnou prem. |
||
Dero Profil |
#8 · Zasláno: 13. 12. 2005, 13:12:38
Chamurappi, izsak: Mockrát děkuju, vyřešeno.
|
||
Časová prodleva: 4 měsíce
|
|||
j_hajsl Profil |
#9 · Zasláno: 3. 4. 2006, 22:58:49
Zdravím, řeším podobný problém, ale potřebuji tu funkci přidat k již existujícímu onsubmit u formulařů, pokud tam jsou definovany
např. mám <form onsubmit="return kontrola_dat(this)"> ... pak na konci kodu mu tedy priradim funkci (mám na stránce hafo formulaříků) o = document.getElementsByTagName('form'); for (i = 0; i < 50; i++) if (o[i]) o[i].onsubmit = function() { ukaz_odesilani_dat () } ; jenže pak se mi ta původni zruší, jak to udělat, aby se přidala k již existující .... |
||
Oswald Profil |
j_hajsl
Buď můžeš používat addEventListener, respektive attachEvent pro IE nebo na to používat nějakou takovouhle funkci: function addListener(object, event, newListener) { if (object[event] instanceof Function) { var oldListener = object[event]; object[event] = function () { oldListener.apply(this); newListener.apply(this); } return; } object[event] = newListener; } addListener(document.body, 'onclick', function(){alert('onclick1')}); addListener(document.body, 'onclick', function(){alert('onclick2')}); |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0