message.replace( 'setTimeout', 'setInterval' ); :-)
On Tue, Nov 24, 2009 at 10:30 AM, Michael Geary <m...@mg.to> wrote: > The problem is in your setTimeout() call. > > When you pass a string argument to setTimeout(), that string is evaluated > *in the global context*. > > Instead, pass a function to setTimeout() and that function will be executed > in the scope you expect. > > Since you're just calling a single function anyway, you can simply give its > name to setInterval(): > > setInterval( crossfade, 5000 ); > > Or you can pass a function expression to setInterval(): > > setInterval( function() { > // body here > }, 5000 ); > > Also, just to make sure you know, this pattern you're using doesn't wait > for a "document ready" before executing the code: > > (function($) { > // code here > })(jQuery); > > It executes the "code here" immediately where you place this function. > That's perfectly fine and may be what you want. If you want to wait for > document ready you can change it to: > > jQuery(function($) { > // code here > }); > > Or if you have some code you want to run immediately and other code that > should wait for document ready, you can combine the two approaches: > > (function($) { > > // code here runs immediately > > $(function() { > // code here runs when document ready > // and can access variables in outer function > }); > > })(jQuery); > > -Mike > > > On Tue, Nov 24, 2009 at 9:31 AM, Magnificent < > imightbewrongbutidontthin...@gmail.com> wrote: > >> Hello all, >> >> I'm trying to group some exisiting top-level functions inside a >> closure (to avoid polluting the global namespace) but I'm not quite >> getting it to work. >> >> First, all the JS works outside my anonymous function, but once I put >> it in the anonymous function I get an error of "crossfade is not >> defined". Does anyone see anything completely obvious that I am >> missing? >> >> I'm not quite getting why the the setInterval/crossfade works outside >> the anonymous function but not inside. Anything inside start() should >> be able to see vars/functions outside start() and it should all be >> protected in the closure created by the top-level anonymous function? >> I'm not trying to access anything *within* crossfade(), I'm just >> trying to execute it. >> >> >> (function($) { >> >> //vars up here that internal functions can access >> //also using some jquery inside here, so using $ >> >> function crossfade() { >> //body here >> } >> >> //other functions >> >> function start() { >> //body here >> >> cInterval = setInterval('crossfade()', 5000); >> } >> >> })(jQuery); >> > >