I don\'t understand why the infinite loop does not work but uncommenting the function call works.
When you use setInterval
you keep adding the function you are calling to the queue of things for the browser to do. Repaint events are also added to this queue.
When you use an infinite loop, the browser never gets to the end of the function, so it never gets around to running a repaint and the image in the document never updates.