我对函数有很多问题,我对变量范围感到困惑。我尝试使用回调函数,但我无法得到它。
我有一个用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>
答案 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 ...
}
如果将其移到功能之外,则不会继续重置