I have this sniplet of code in jQuery
$element.parent().children().last().hide().show('slide', {direction : 'left'}, 700, function () {
$element.delay(2000, function() {
$element.parent().children().last().hide('slide', {direction: 'left'}, 700);
reload_table(question_number);
//delay ends here
});
});
delay
is declared as:
jQuery.fn.delay = function(time,func){
return this.each(function(){
setTimeout(func,time);
});
};
Now I get the error:
useless setTimeout call (missing quotes around argument?)
FF3.x, Firefox 6+ is ok. Any ideas on that? Why could this be happening?
There already exists a jQuery-method delay and it expects a string(queueName) and not a function as parameter. Choose another name for your delay-method to avoid conflicts.
I got same error when I wrote
setTimeout(updateStatus(), 5000);
instead of
setTimeout(updateStatus, 5000);
I agree with wsbaser. I had the additional instance of needed to pass information to the function, and for simplicity used:
setTimeout(function(){ updateStatus(myData) } , 5000);
The argument needs to be a function and not a function being called. Firefox caught this error, chrome let it go.
Just for reference if someone stumbles upon this question and is looking for a possible answer. I got the exact same error message as the initial poster because I was mixing up the setTimeout
arguments order.
This:
setTimeout(25, function(){
spotlight.intro.find('#intro').ellipsis();
});
... gave me the error message. I changed the function to this:
setTimeout(function(){
spotlight.intro.find('#intro').ellipsis();
}, 25);
And my problem was solved.
The problem was in Firefox 3. It is not handling some elements properly => Element is completely omitted in the tree and ignored -> hence my original problem
来源:https://stackoverflow.com/questions/8211005/useless-settimeout-call-missing-quotes-around-argument