setInterval函数中的变量incrementmenter

时间:2013-11-05 09:14:19

标签: javascript variables scope setinterval

我对函数有很多问题,我对变量范围感到困惑。我尝试使用回调函数,但我无法得到它。

我有一个用css为背景设置动画的功能。我需要该函数在setInterval运行时第二次单击时不会将增量变量重启为0。 看到当你点击html的time1或time2两次时,计数器的顺序不能保存订单。

function movie(elm,jumpPx,spriteHeight,duration){
var inc=0;
var time=setInterval(function(){

    if(inc<spriteHeight){
        inc+=jumpPx;
        //elm.style.backgroundPosition='0px -'+inc+'px';
        elm.innerHTML=inc;
    }else{
        clearInterval(time);
        elm.style.backgroundPosition='0px -0px';          
    }
},duration);  

}

<p onclick="movie(this,1,1000,1000)">time1</p>
<p onclick="movie(this,1,1000,1000)">time2</p>

1 个答案:

答案 0 :(得分:1)

您的变量声明在函数内:

function movie(elm,jumpPx,spriteHeight,duration){
    var inc=0;
    ... other code ...
}

因此,每次调用该函数时,它会将'inc'重置为0。

var inc = 0;
function movie(elm,jumpPx,spriteHeight,duration){
    ... other code ...
}

如果将其移到功能之外,则不会继续重置