如何将 setInterval 和 clearInterval 用作函数
How to use setInterval and clearInterval as functions
我将 setInterval 与 jQuery 结合使用来更改背景图像 onLoad 的位置,但我想将其用作函数,以便在单击元素时调用 clearInterval 来停止它并单击另一个元素但 panRight() 未加载时再次调用该函数。
function moveImage() {
var x = 0;
x-=1;
$('.bg-img').css('background-position-x', x + 'px');
}
function panRight(){
setInterval(moveImage(),25);
}
// moveImage onLoad
panRight();
$("#stop-animation").click(function(){
clearInterval(panRight);
});
$("#start-animation").click(function(){
panRight();
});
以下代码在 onLoad 上按预期工作,并且是我试图重构为函数的代码。
$(function(){
var x = 0;
setInterval(function(){
x-=1;
$('.bg-img').css('background-position', x + 'px 0');
}, 25);
})
你可以这样做:
function moveImage() {
var x = 0;
x-=1;
$('.bg-img').css('background-position-x', x + 'px');
}
var panInterval; //timer id
function panRight(){
panInterval = setInterval(moveImage,25);
}
// moveImage onLoad
panRight();
$("#stop-animation").click(function(){
clearInterval(panInterval);
});
$("#start-animation").click(function(){
panRight();
});
这里的var panInterval
是计时器id,每当我们调用setInterval
时都会返回它,可以用来清除间隔
我将 setInterval 与 jQuery 结合使用来更改背景图像 onLoad 的位置,但我想将其用作函数,以便在单击元素时调用 clearInterval 来停止它并单击另一个元素但 panRight() 未加载时再次调用该函数。
function moveImage() {
var x = 0;
x-=1;
$('.bg-img').css('background-position-x', x + 'px');
}
function panRight(){
setInterval(moveImage(),25);
}
// moveImage onLoad
panRight();
$("#stop-animation").click(function(){
clearInterval(panRight);
});
$("#start-animation").click(function(){
panRight();
});
以下代码在 onLoad 上按预期工作,并且是我试图重构为函数的代码。
$(function(){
var x = 0;
setInterval(function(){
x-=1;
$('.bg-img').css('background-position', x + 'px 0');
}, 25);
})
你可以这样做:
function moveImage() {
var x = 0;
x-=1;
$('.bg-img').css('background-position-x', x + 'px');
}
var panInterval; //timer id
function panRight(){
panInterval = setInterval(moveImage,25);
}
// moveImage onLoad
panRight();
$("#stop-animation").click(function(){
clearInterval(panInterval);
});
$("#start-animation").click(function(){
panRight();
});
这里的var panInterval
是计时器id,每当我们调用setInterval
时都会返回它,可以用来清除间隔