Sir
Sir

Reputation: 8280

Confused with set timeout

I'm really confused how these work...the timeout does not seem to keep running it calls begin_anim once and then thats it....

So am hoping someone can see where i went wrong and explain how I implement this?

This is my code:

//test data:
//type = 'up';
//div = document.getElementById('theid');
//marginL = -400;

function timeout_begin(type,div,marginL){   
    setTimeout(begin_anim(type,div,marginL),1000);
}

function begin_anim(type,div,marginL){
    if(type == 'up'){
        if(marginL >= '-200'){ 
                if(marginL > '-200'){ 
                    div.style.marginLeft = '-200px';
                }
            return false;
        }
    marginL += 2;
    div.style.marginLeft = marginL+'px';


    }
    return false;
}

Hope you can help!

Upvotes: -1

Views: 86

Answers (4)

Parv Sharma
Parv Sharma

Reputation: 12705

setTimeout is supposed to call the function only once.

if you want to call the method repeatedly use setInterval(function(){}, 1000/*duration*/)

Upvotes: 1

phenomnomnominal
phenomnomnominal

Reputation: 5515

You're looking for setInterval!

Also, it's probably better to pass an actual function in, and you can hold a reference to the loop so you can stop it running later if you want to:

var animationLoop = setInterval(function () {
       begin_anim(type, div, marginL);
    }, 1000);

clearInterval(animationLoop); // This would then stop the loop.

Upvotes: 4

Paul Roub
Paul Roub

Reputation: 36438

First, you want setInterval, not setTimeout

Second, you'll pass a reference to a function, not a call to a function. Something like:

function timeout_begin(type,div,marginL)
{   
  setTimeout(
    function() { 
      begin_anim(type,div,marginL);
    }, 
    1000
  );
}

Upvotes: 1

Anthony
Anthony

Reputation: 2296

setTimeout is only expected to execute the function once after the given timeout. See the documentation here: http://www.w3schools.com/jsref/met_win_settimeout.asp

You're probably looking for setInterval (http://www.w3schools.com/jsref/met_win_setinterval.asp) which executes the code at the interval you set until clearInterval is called.

Upvotes: 0

Related Questions