By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,320 Members | 2,239 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,320 IT Pros & Developers. It's quick & easy.

Trouble using setTimeout/setInterval

P: n/a
In the course of trying to build a simple clock, I've run into a problem
using the setInterval (and setTimeout) function.

http://weston.canncentral.org/misc/tkeep/tkeep.html
http://weston.canncentral.org/misc/tkeep/tkeep.jss

function fieldToClock(fieldId)
{
var field = document.getElementById(fieldId);
alert("Starting a clock in text field " + fieldId + "(" + field
+ ")");
codeSnippet = "clockUpdate(" + fieldId + ")";
setInterval(clockUpdate(fieldId),1000);
//setInterval(codeSnippet,1000);
//setInterval("eval(\"" + codeSnippet + "\")",1000);
}

function clockUpdate(fieldId)
{
field = document.getElementById(fieldId);
field.value = date2timestr(new Date());
}

The problem line is the setInterval line, and it seems to have something
to do with the fact I want to pass the function clockUpdate an argument
(I don't want to specify a single text element to be associated with the
display of the clock. Ideally, I'd like to be able to call the function
"fieldToClock" with the id of any text field in the document and turn it
into a clock).

The two commented out lines are other approaches I've applied. The first
approach yields the error:

Error: useless setInterval call (missing quotes around argument?)
Source File: http://weston.canncentral.org/misc/tkeep/tkeep.jss
Line: 6

The second/third approach yeild:

Error: clock_STF is not defined
Source File: http://weston.canncentral.org/misc/tkeep/tkeep.jss
Line: 7

Except this error is repeated every 1000 seconds. :)

Any ideas?

Thanks,

Weston

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Jul 20 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
Weston C <west8on[at]cann8central.RemoveEights.org> writes:
In the course of trying to build a simple clock, I've run into a problem
using the setInterval (and setTimeout) function. var field = document.getElementById(fieldId); codeSnippet = "clockUpdate(" + fieldId + ")";
So, fieldId is a string. Say it is the string "foobar". Then your
codeSnippet becomes the string
"clockUpdate(foobar)"
Here, foobar is not a string, but a variable name, because the quotes
are missing. Try:
codeSnippet = "clockUpdate(\""+fieldId+"\");";
setInterval(clockUpdate(fieldId),1000);
Here, you call the clockUpdate function right now, and try evaluating
the result of that in one second. Try:
setInterval(function(){clockUpdate(fieldId);},1000 );
or use the above codeSnippet with: //setInterval(codeSnippet,1000); //setInterval("eval(\"" + codeSnippet + "\")",1000);
Don't use eval. Don't ever use eval (the exceptions are so rare that
you'll probably never hit them).
The two commented out lines are other approaches I've applied. The first
approach yields the error:

Error: useless setInterval call (missing quotes around argument?)
Source File: http://weston.canncentral.org/misc/tkeep/tkeep.jss
Line: 6
Yes, the return value of clockUpdate is undefined. It is useless to
delay "undefined" for one second.
The second/third approach yeild:

Error: clock_STF is not defined
Source File: http://weston.canncentral.org/misc/tkeep/tkeep.jss
Line: 7


Ah, the content of your string is "clock_STF". As I said above, it
is now seen without its quotes, as a variable, and there is no
variable defined by that name.

/l
--
Lasse Reichstein Nielsen - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 20 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.