views:

21

answers:

2

Hi, I want to do display time-changing data on a web page. I use the JQuery framework. I use the following code as a test : display a different random number each second. It does not work. Why ? What is a correct, working way ?

<html>
  <head>
    <title>test</title>
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
      $(document).ready(function() {
          function refreshRandomNumber() {
            var lHtmlBlob = "<p> random = " + Math.random() + "</p>";
            $('#random_number').html(lHtmlBlob);
          }
        setInterval(refreshRandomNumber(), 1000);
      });
    </script>
  </head>

  <body>
    <div id="random_number"></div>
  </body>
</html>
+2  A: 

You need to pass setInterval just the function referenced by refreshRandomNumber and not the return value of that function what you do by using refreshRandomNumber(). So try this:

setInterval(refreshRandomNumber, 1000);
Gumbo
Thank you, it works perfectly now. I started to learn JavaScript two hours ago, my first gotcha ^^
Monkey
+1  A: 

Small difference. instead of:

setInterval(refreshRandomNumber(), 1000);

use:

setInterval(refreshRandomNumber, 1000);

That passes the function rather than the function return value.

cletus