I have some JavaScript code that looks like:
function statechangedPostQuestion()
{
//alert("statechangedPostQuestion");
if (xmlhttp.readyState==4)
{
var topicId = xmlhttp.responseText;
setTimeout("postinsql(topicId)",4000);
}
}
function postinsql(topicId)
{
//alert(topicId);
}
I get an error that topicId is not defined
Everything was working before I used the setTimeout() function.
I want my postinsql(topicId) function to be called after some time.
What should I do?
You need to feed an anonymous function as a parameter instead of a string. The latter method shouldn’t even work – per the ECMAScript specification – but browsers are just lenient. This is the proper solution. Don’t ever rely on passing a string as a ‘function’ when using
setTimeout()orsetInterval(). It is slower, because it has to be evaluated and it just isn’t right.UPDATE:
As Hobblin said in his comments to the question, now you can pass arguments to the function inside setTimeout using
Function.prototype.bind().Example: