| Autor | Zpráva | ||
|---|---|---|---|
| Unknow Profil * |
#1 · Zasláno: 22. 11. 2010, 19:49:25
Zdravím, s JQuery teprve začínám a mám problém pochopit jak pracují paramtery ve funki v JavaScriptu. Jestli je možnost předat parametr odkazem nebo hodnotou apod.
Problém je:
var numBox = $('div', obj).length;
var theBox = $('div:first', obj);
for (var i=1; i<= numBox; i++) {
obj.timer = setTimeout(function() { start_slider(theBox); }, i*1000);
//theBox = theBox.next();
}
function start_slider(box) {
box.css("width", 500);
}
pokud zakomentuju možnost next() provede se změna pouze na prvním boxu, pokud ovšem toto odkomentuji nestane se nic. Má doměnka je, že jakmile se provede cely cyklus, než začne TimeOut již není platný parametr theBox ve volane funkci start_slider. Takze se to podle toho musí předávat odkazem, jinak si to nedokážu vysvětlit. |
||
| Chamurappi Profil |
#2 · Zasláno: 22. 11. 2010, 20:00:13
Reaguji na Unknowa:
„s JQuery teprve začínám“ Dotaz vůbec nesouvisí s jQuery. Začínáš s JavaScriptem. Primitivní datové typy (čísla, řetězce, boolean) se předávají vždy hodnotou, objektové typy (pole, objekty, HTML elementy) vždy odkazem. Funkce načasovaná setTimeoutem se vykonává až v nastaveném čase a fungují v ní i lokální proměnné nastavené ve funkci, ze které se setTimeout volal, takže změny v theBoxu, které proběhly dříve, nemají žádný význam.
Budeš asi potřebovat lexikální uzávěr. |
||
|
Časová prodleva: 15 let
|
|||
0