Autor | Zpráva | ||
---|---|---|---|
anonymníí Profil * |
#1 · Zasláno: 1. 6. 2015, 13:41:47
Ahoj,
mám kolekci elementů získanou z getElementsByTagName . Nyní bych potřeboval při kliku na některý z elementů dané kolekce, navěsit zavolání JS funkce. Nicméně, nedaří se onclick vyvolat.
var events = '...'; var ep = events.getElementsByTagName('p'); var links = new Array('1.html', '2.html', '3.html'); ep.onclick = function() { // klikl jsem na 2. odstavec, potřebuji přesměrovat na '2.html' var idx = ? // index odstavce v kolekci location.url = links[idx]; // presmerovat } Myslím si, že hlavní úkol bude získat index kliknutého prvku, ale to se mi nedaří. Zkoušel jsem hledat, ale našel jsem získání indexu jen průchodem celého pole/kolekce alá http://stackoverflow.com/a/8802111, ale to se mi moc nelíbí. |
||
Radek9 Profil |
#2 · Zasláno: 1. 6. 2015, 14:22:05
anonymníí:
Nemůžeš navěsit event na kolekci. Řešením je buď opravdu projít kolekci těch elementů a každému nastavit event, nebo ten event dát na rodičovský element a zjišťovat target. |
||
_es Profil |
#3 · Zasláno: 1. 6. 2015, 14:36:44
anonymníí:
Vlastnosť onclick je treba nastaviť každému odkazu, napríklad cyklom for. Alebo použiť „prebublanie“ a rodičovský element. Cyklom by to mohlo ísť napríklad:
function() presmeruj { location.url = this.odkaz; // presmerovat } for(var i=0; i<links.length; ++i) { ep[i].odkaz = links[i]; ep[i].onclick = presmeruj; } |
||
anonymníí Profil * |
#4 · Zasláno: 1. 6. 2015, 16:49:14
Jo, tím cyklem to mám taky, resp. nemám problém to napsat.
Hledal jsem spíše něco ve smyslu [jakýkoliv element z kolekce].onclick = ... , ale to asi nepůjde. Jdu tedy do cyklu. Asi je správný, jen se mi jaksi nezdá výkonově - nemám to změřeno, jen subjektivní pocit.
Díky za potvrzení cyklu. |
||
Časová prodleva: 10 let
|
0