3

Can someone tell me why the javascript function 'GenerateNewNumber' fires twice in Chrome, but not for IE or Firefox? Using Chrome 20.0.1132.57, IE9 and Firefox 13.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="/App_JScript/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" language="javascript">

        $(document).ready(function () {
            $('a#RandomNumber').click(function () { initiateNewNumber(); });
        });

        function initiateNewNumber() {

            setTimeout('GenerateNewNumber();', 3000);
        }

        function GenerateNewNumber() {
            var randomnumber = Math.floor(Math.random() * 1123);
            document.getElementById('RandomNumber').innerHTML += '<br>' + 'Random Number is ' + randomnumber;
        }
    </script>
</head>
<body>
    <a id="RandomNumber" href="#">Click for Random Number</a>
</body>
</html>

I've searched through Stackoverflow, but can't find any suggestions which will help.

Thanks in advance.

user199962
  • 41
  • 1
  • 3
  • Been working on this all morning, and as soon as I post it I figure it out :( I needed $('a#RandomNumber').click(function () { initiateNewNumber(); return false; }); – user199962 Jul 22 '12 at 00:59

2 Answers2

1

setTimeout expects a function as first parameter:

setTimeout(function() { GenerateNewNumber(); }, 3000);
gronke
  • 189
  • 3
  • 4
    It's better to use a function, but using a string as code is supported : https://developer.mozilla.org/en/DOM/window.setTimeout – jsoverson Jul 22 '12 at 01:07
  • 1
    And if all you are doing is calling a single function, you can supply it directly: `setTimeout(GenerateNewNumber, 3000);` – Dennis Jul 22 '12 at 01:12
  • That's right, Dennis. I wanted to make clear that there is a function passed as parameter. – gronke Jul 22 '12 at 01:39
1

Try this

window.setTimeout(GenerateNewNumber, 3000);

Tallboy
  • 12,847
  • 13
  • 82
  • 173