Count down from 10 and repeat it when the timer has reacted 0

countdown, javascript, jquery

Solution

I see a lot of problems in your script... So not sure how you even get that to work..

- Function name can't have `-`, so that call won't work :S

- `countdown` is a global variable inside your `function countdown()` which is the same as your function name, effectively a `countdownception`

- You are effectively creating a new `Interval` every one second as you are calling `countdown`

To achieve what you want, try the simpler:

function countdown() {
    // your code goes here
    var count = 10;
    var timerId = setInterval(function() {
        count--;
        console.log(count);

        if(count == 0) {
            // your code goes here
            count = 10;
        }
    }, 1000);
}

countdown();

http://jsfiddle.net/Xrbm5/13/

Problem

I want to count down from 10 seconds to 0. When it have reached 0 the DIV will reload and the timer will start over again. I have this function that allows it to do exactly like I wanted but the problem is that when the countdown have reached 0 and going back to 10, it will count -1 reload -2 reload -3 reload -4 reload and so on. That is not how I want it! :) Here's my code: ``` var time = setInterval(countdown, 1000); function countdown() { var count = 10; countdown = setInterval(function() { $('#countdown').html(count + ' sekunder kvar'); if(count == 0) { $('#weather-data').load('jquery-fetch/fetch-weatherdata.php?place=' + myplace); clearInterval(countdown); } count--; }, 1000); } ``` How can I fix my problem so the timer counts down from 10 to 0 and repeat that countdown forever? Thanks in advance. EDIT When this function has reached 0 for the first time and starts over, it counts like this: 10, 9, 8, 10, 7, 6, 5, 4, 3, 2, 1, 10, 9, 8, 7, 10, 6, 5, 4, 3, 2, 1, 10, 9, 8, 10, 7, 6, and so on. Why does it act like this with this code? ``` function countdown() { var count = 10; var timerId = setInterval(function() { $('#countdown').html(count + ' sekunder kvar'); count--; if(count == 0) { $('#weather-data').load('jquery-fetch/fetch-weatherdata.php?place=' + myplace); clearInterval(timerId); countdown(); } }, 1000); } countdown(); ``` Thanks in advance!

Original source