Autor | Zpráva | ||
---|---|---|---|
epsik Profil * |
#1 · Zasláno: 8. 5. 2008, 21:25:16
pokouším se ještě jednou položit otázku na kterou mi nikdo neodpověděl (asi protože byla špatně formulovaná). Shrnu tedy problém do jednoduchoho scriptu:
for (var i=1; i < 10; i++) { var objekt = "objekt"+i; document[objekt].onclick = function () { dalsi_funkce (i); }; Zde se odehraje to, že pokud kliknu na objekt1–objekt10, vždy se zavolá funkce ale ta proměnná se požaduje až v tuto chvíli, čili vrátí 10 (dalsi_funkce (10);) Já bych ale potřeboval, aby se ta funkce nastavovala vždy už při jejím projetí (1–10) Snad je mi rozumět...tak pokud někdo víte jak na to, moc prosím poraďte...já už jsem v koncích. |
||
epsik Profil * |
#2 · Zasláno: 8. 5. 2008, 21:26:00
}
|
||
peta Profil |
#3 · Zasláno: 9. 5. 2008, 07:23:06
epsik
... kdyz to napises takhle function () {dalsi_funkce (i);}; ... jaka je podle tebe hodnota i? ... i je bud undefined nebo ma posledni hodnotu. ... Posledni hodnota cyklu je? for (var i=1; i < 10; i++) -> 10<10 neplati, cili i=10, i je tedy 10 nebo undefined. v jednom programu jsem pouzival toto: function setxEvent(x,xEvent,xFunction) { if (isIE) {x[xEvent]=new Function(xFunction);} //IE else {x.setAttribute(xEvent,xFunction);} //other } cili mozna ti to bude fungovat jako document[objekt].onclick = function (i) {dalsi_funkce (i);} |
||
los Profil * |
#4 · Zasláno: 9. 5. 2008, 08:17:19
V JavaScripte je platnosť premennej obmedzená na funkciu, v ktorej je deklarovaná (viď JavaScript closures). Takže aby sa nebola premenná i v obslužnej funkcii totožná s premennou i z cyklu, treba vytvoriť novú premennú:
for (var i = 0; i < 10; ++i) (function(i) { document["objekt" + i].onclick = function() { dalsi_funkce(i); }; })(i); Prípadne podobne: function setupObject(i) { document["objekt" + i].onclick = function() { dalsi_funkce(i); }; } for (var i = 0; i < 10; ++i) setupObject(i); |
||
epsik Profil * |
#5 · Zasláno: 9. 5. 2008, 13:52:09
los úžasný...moc děkuju, je to přesně to, co sem poteboval :)
už jsem podobný zápis viděl, ale nikdy jsem nechápal, k čemu vlastně slouží....v podstatě to úplně nechápu dál, budu muset studovat. mluvím o tomhle: for (var i = 0; i < 10; ++i) (function(i) { document["objekt" + i].onclick = function() { dalsi_funkce(i); }; })(i); |
||
Časová prodleva: 3 dny
|
|||
epsik Profil * |
#6 · Zasláno: 12. 5. 2008, 14:42:32
los teď koukám, že jsem omylem neodeslal reakci, kterou jsem psal v pátek. Chtěl jsem moc poděkovat za radu. Můj problém jsem tím vyřešil a konečně pochopil, k čemu vlastně slouží tento zápis (tuším anonymní funkce). Díky :)
|
||
Časová prodleva: 16 let
|
0