1

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

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

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>
4

1 回答 1

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 ...
}

如果你把它移到函数之外,它不会一直重置

于 2013-11-05T09:23:23.940 回答