Javascript trouble

By Spike
May 6, 2004
Post New Reply
  1. I was just in a chat on WinMX, in which I was given the following script. He couldn't get it working, and I was also puzzled.

    The trouble is, that now it's bugging me!

    Can somewone tell me where this script is wrong?

    Code:
    <script language="JavaScript"> 
    
    var counter
    
    function looper()
    
    {
    
    counter = Math.round("Math.random()"*10)
    
    alert("MICROSOFT SUCK! get out of this one billy!")
    
    }
    
    setTimeout("looper()",counter)
    
    </script>
    Now, I'm not the best at scripting. Not by a long shot, but I can't help but feel that theres not too much wrong with the above. I might be wrong though.
  2. Mictlantecuhtli

    Mictlantecuhtli TechSpot Evangelist Posts: 4,916   +9

    Thou shalt not have quotation marks in Math.round function
  3. Spike

    Spike Newcomer, in training Topic Starter Posts: 2,371

    Thanks.

    The script still only gives me one alert and nothing else though. Given the alert message, I'm guessing it's supposed to do more. lol.

    Would also help if my .js files weren't opening in dreamweaver. lol.
  4. Mictlantecuhtli

    Mictlantecuhtli TechSpot Evangelist Posts: 4,916   +9

    You're supposed to get only one alert with that script. SetTimeout is a timer, not a loop function. If you want loops, use for or while functions. For example, an infinite loop could be
    Code:
    while (1<2)
    {
       alert("How many times can you click this?")
    }
    
  5. Spike

    Spike Newcomer, in training Topic Starter Posts: 2,371

    Thanks. I have it now, although I don't know why!!!

    Code:
    <HTML>
    <head>
    <title>
    test
    </title> 
    
    <script language="JavaScript"> 
    
    var counter
    
    function looper()
    
    {
    
    counter=Math.round(Math.random()*10)
    
    alert("MICROSOFT SUCK! get out of this one billy!")
    
    setTimeout("looper()",counter)
    
    }
    
    
    setTimeout("looper()",counter)
    
    </script> 
    
    </head>
    This seems to be an infinite loop. Removing either or both of the setTimeout lines renders the script useless. I have no idea why this works, but it does on my machine.

    Any pointers???
  6. Mictlantecuhtli

    Mictlantecuhtli TechSpot Evangelist Posts: 4,916   +9

    Oh, my bad, setTimeout does indeed loop until the script is unloaded. Your last script is an infinite loop because once looper() is called, it calls itself with that setTimeout inside the function.
  7. Spike

    Spike Newcomer, in training Topic Starter Posts: 2,371

    Thanks for clearing that up Mict.

    The one thing that's still bugging me though, is why is it that I need BOTH setTimeout lines for the script to do anything at all?

    Oh, BTW, The same guy just gave me this to look at. what a joker. lol

    Code:
    <html>
    
    <head>
    <script language="javascript">
    while (1<2)
    {
    javascript:window.open('http://www.google.com')
    }
    </script>
    <title>:)</title>
    </head>
    
    <body>
    
    </body>
    
    </html>
    There's a couple of people I would be more than happy to trap with that. lol


Add New Comment

TechSpot Members
Login or sign up for free,
it takes about 30 seconds.
You may also...


Get complete access to the TechSpot community. Join thousands of technology enthusiasts that contribute and share knowledge in our forum. Get a private inbox, upload your own photo gallery and more.