Autor Zpráva
Unknow
Profil *
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
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.

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