66

How do I get this javascript to run every second?

source code:

<script type="text/javascript">
$(function() {
    //More Button
    $('.more').live("click",function()  {
        var ID = $(this).attr("id");
        if(ID) {
            $("#more"+ID).html('<img src="moreajax.gif" />');

            $.ajax({
                type: "POST",
                url: "ajax_more.php",
                data: "lastmsg="+ ID, 
                cache: false,
                success: function(html){
                    $("ol#updates").prepend(html);
                    $("#more"+ID).remove();
                }
            });
        } else {
            $(".morebox").html('no posts to display');
        }

        return false;

    });
});

</script>
1
  • setInterval(function () { $YOUR_CODE }, 1000); Commented Dec 25, 2023 at 2:51

6 Answers 6

117

Use setInterval() to run a piece of code every x milliseconds.

You can wrap the code you want to run every second in a function called runFunction.

So it would be:

var t=setInterval(runFunction,1000);

And to stop it, you can run:

clearInterval(t);
Sign up to request clarification or add additional context in comments.

4 Comments

setTimeout(runFunction,1000) please. Don't pass strings. And it won't execute the code every second (at least there s something missing).
clean up: var t=setInterval(mainLoop,1000); $( window ).unload(function() { clearInterval(t); console.log("Handler for .unload() called."); return ""; });
@hannunehg why?
13

Use setInterval:

$(function(){
setInterval(oneSecondFunction, 1000);
});

function oneSecondFunction() {
// stuff you want to do every second
}

Here's an article on the difference between setTimeout and setInterval. Both will provide the functionality you need, they just require different implementations.

2 Comments

I'm getting an error message when I tried (multiple times) to edit: "Suggested edit queue is full" (I've never seen that message before). The about.com link is dead. About.com was rebranded to Dotdash.com which split up subdomains and categories from About.com to multiple domains like thoughtco.com and many other verticals. According to wired.com, this happened on May 2 2017. Here is an archive copy (on Archive.org from 2016): setTimeout or setInterval.
Thanks @KevinFegan - not sure why you can't edit, but I've updated the link now. Good spot :)
6

You can use setTimeout to run the function/command once or setInterval to run the function/command at specified intervals.

var a = setTimeout("alert('run just one time')",500);
var b = setInterval("alert('run each 3 seconds')",3000);

//To abort the interval you can use this:
clearInterval(b);

Comments

1
window.setTimeout(func,1000);

This will run func after 1000 milliseconds. So at the end of func you can call window.setTimeout again to go in a loop of 1 sec. You just need to define a terminate condition.

Reference

Comments

1

You can use setInterval:

var timer = setInterval( myFunction, 1000);

Just declare your function as myFunction or some other name, and then don't bind it to $('.more')'s live event.

Comments

0

Use setInterval(func, delay) to run the func every delay milliseconds.

setTimeout() runs your function once after delay milliseconds -- it does not run it repeatedly. A common strategy is to run your code with setTimeout and call setTimeout again at the end of your code.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.