JavaScript Development
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsWeb DesignJavaScript Development

Closed Thread
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old May 2nd, 2006, 04:00 PM
saidbakr's Avatar
saidbakr saidbakr is offline
PHP is my Love!
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Jul 2003
Location: Kafr Sakr, Egypt
Posts: 87 saidbakr User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 12 h 13 m 5 sec
Reputation Power: 10
SetTimeout arguments problem

Hello,
As we know that setTimeout() is used to call a function spontanousely over fixed parts of time as the following manner:
setTimeout(myFunc,1000);
The problem I got is, I want to call the function myFunc() with passing an argument to it as follows,
setTimeout(myFunc('parameter'),1000);
The above code generates an error. So how can I get my goal?
__________________
Best Regards,
Said Bakr.

Reply With Quote
  #2  
Old May 2nd, 2006, 04:26 PM
jnsg jnsg is offline
JackOfAllTrades, MasterOfNone
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Nov 2003
Location: Kentucky, USA
Posts: 398 jnsg User rank is First Lieutenant (10000 - 20000 Reputation Level)jnsg User rank is First Lieutenant (10000 - 20000 Reputation Level)jnsg User rank is First Lieutenant (10000 - 20000 Reputation Level)jnsg User rank is First Lieutenant (10000 - 20000 Reputation Level)jnsg User rank is First Lieutenant (10000 - 20000 Reputation Level)jnsg User rank is First Lieutenant (10000 - 20000 Reputation Level)jnsg User rank is First Lieutenant (10000 - 20000 Reputation Level)jnsg User rank is First Lieutenant (10000 - 20000 Reputation Level) 
Time spent in forums: 1 Week 2 Days 4 h 43 m 27 sec
Reputation Power: 123
Send a message via AIM to jnsg
setTimeout() and setInterval() can take one of two things for their first argument. The first is, as you said, a function reference. The second is a string which gets eval()'ed. So in your example, you'd want to do this:
javascript Code:
Original - javascript Code
  1. setTimeout("myFunc('parameter');", 1000);

If using variables as parameters to a delayed function, keep in mind the following distinction:
javascript Code:
Original - javascript Code
  1. // calls myFunc() with the value param will have 1000ms from now
  2. setTimeout("myFunc(param);", 1000);
  3.  
  4. // calls myFunc() with the current value of param,
  5. // even if it changes by the time myFunc() actually gets called
  6. setTimeout("myFunc(" + param + ");", 1000);
Comments on this post
wsa1971 agrees!

Last edited by jnsg : May 2nd, 2006 at 04:33 PM.

Reply With Quote
  #3  
Old May 4th, 2006, 06:53 AM
KorRedDevil's Avatar
KorRedDevil KorRedDevil is offline
Contributing User
Dev Shed Frequenter (2500 - 2999 posts)
 
Join Date: Aug 2005
Location: Bucharest ROMANIA
Posts: 2,557 KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level) 
Time spent in forums: 4 Weeks 5 h 34 m 26 sec
Reputation Power: 614
Send a message via Yahoo to KorRedDevil
Furthermore, it depends on the nature of your parameter, because the expresion is evaluated.

1. If the parameter is a number or a stringed number
var param =5
or
var param ='5'

and you need to pass it as a decimal number
the syntax is:
PHP Code:
 setTimeout('myFunc('+param+')',3000

2. But if the parameter is an alphanumeric

var param ='foo';
the parameter has to be quoted (to avoid evaluation) and the syntax becomes:
PHP Code:
 setTimeout('myFunc("'+param+'")',3000


In the first case as the parameter is evaluated, even if the variable is in fact a string, such as '5', when passed it becomes a decimal number.
Comments on this post
wsa1971 agrees!

Last edited by KorRedDevil : May 4th, 2006 at 06:56 AM.

Reply With Quote
  #4  
Old May 4th, 2006, 08:21 AM
saidbakr's Avatar
saidbakr saidbakr is offline
PHP is my Love!
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Jul 2003
Location: Kafr Sakr, Egypt
Posts: 87 saidbakr User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 12 h 13 m 5 sec
Reputation Power: 10
Conclusion

From the above threads, I may be able to conclude that:-
setTimeout() method, acts as eval() method in addition, it able to repeat the evaluation of the string every determined period of time passed.

Reply With Quote
  #5  
Old May 4th, 2006, 11:06 AM
KorRedDevil's Avatar
KorRedDevil KorRedDevil is offline
Contributing User
Dev Shed Frequenter (2500 - 2999 posts)
 
Join Date: Aug 2005
Location: Bucharest ROMANIA
Posts: 2,557 KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level)KorRedDevil User rank is Brigadier General (60000 - 70000 Reputation Level) 
Time spent in forums: 4 Weeks 5 h 34 m 26 sec
Reputation Power: 614
Send a message via Yahoo to KorRedDevil
Quite so, except that you may avoid evaluation if you quote the parameter.

Reply With Quote
Closed Thread

Viewing: Dev Shed ForumsWeb DesignJavaScript Development > SetTimeout arguments problem

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap