JQuery, setTimeout not working JQuery, setTimeout not working jquery jquery

JQuery, setTimeout not working


You've got a couple of issues here.

Firstly, you're defining your code within an anonymous function. This construct:

(function() {  ...)();

does two things. It defines an anonymous function and calls it. There are scope reasons to do this but I'm not sure it's what you actually want.

You're passing in a code block to setTimeout(). The problem is that update() is not within scope when executed like that. It however if you pass in a function pointer instead so this works:

(function() {  $(document).ready(function() {update();});  function update() {     $("#board").append(".");    setTimeout(update, 1000);     }  })();

because the function pointer update is within scope of that block.

But like I said, there is no need for the anonymous function so you can rewrite it like this:

$(document).ready(function() {update();});function update() {   $("#board").append(".");  setTimeout(update, 1000);     }}

or

$(document).ready(function() {update();});function update() {   $("#board").append(".");  setTimeout('update()', 1000);     }}

and both of these work. The second works because the update() within the code block is within scope now.

I also prefer the $(function() { ... } shortened block form and rather than calling setTimeout() within update() you can just use setInterval() instead:

$(function() {  setInterval(update, 1000);});function update() {  $("#board").append(".");}

Hope that clears that up.


setInterval(function() {    $('#board').append('.');}, 1000);

You can use clearInterval if you wanted to stop it at one point.


SetTimeout is used to make your set of code to execute after a specified time period so for your requirements its better to use setInterval because that will call your function every time at a specified time interval.