需要帮助缩短/循环javascript函数使用循环和替代mod吗

需要帮助缩短/循环javascript函数使用循环和替代mod吗,javascript,Javascript,我有一个动画,根据页面上的滚动位置显示8个可能帧中的一个。每次滚动20px,将显示下一帧,直到到达第8帧,然后在160px之后返回到第1帧。目前,如果页面是2000px长,我需要100条if语句,这看起来很荒谬。必须有一种方法,使用一个使用循环的好函数将它变成几行。一位朋友说这将是“mod”的工作,但显然javascript不能做mod或remainder 我已经摘录了下面的脚本,但你可以在这里看到整个想法 函数滚动(){ 如果(window.pageYOffset

我有一个动画,根据页面上的滚动位置显示8个可能帧中的一个。每次滚动20px,将显示下一帧,直到到达第8帧,然后在160px之后返回到第1帧。目前,如果页面是2000px长,我需要100条if语句,这看起来很荒谬。必须有一种方法,使用一个使用循环的好函数将它变成几行。一位朋友说这将是“mod”的工作,但显然javascript不能做mod或remainder

我已经摘录了下面的脚本,但你可以在这里看到整个想法

函数滚动(){
如果(window.pageYOffset<20){
setTimeout(“document.images['ball'].src=imageArray[0].src”,0);
}
else if(window.pageYOffset<40){
setTimeout(“document.images['ball'].src=imageArray[1].src”,0);
}
否则如果(window.pageYOffset<60){
setTimeout(“document.images['ball'].src=imageArray[2].src”,0);
}
否则如果(window.pageYOffset<80){
setTimeout(“document.images['ball'].src=imageArray[3].src”,0);
}

您可以在javascript中使用模,它是
%
字符

但您可以使用以下方式缩短代码:

function scroll() {
    setTimeout(function() {
        document.images['ball'].src = imageArray[window.pageYOffset % 7].src;
    }, 0);
    return false;
}

只是一个旁注,不要将字符串传递给使用
eval
(即
evil
)的
setTimeout
。而是传递函数。
setTimeout(function(){document.images['ball'].src=imageArray[0].src;},0)
谢谢,我会记住你不应该使用那种代码…对于那种事情,最好使用精灵,就像在游戏中一样,因为你不需要在滚动时等待加载的图像…查找
function scroll() {
    setTimeout(function() {
        document.images['ball'].src = imageArray[window.pageYOffset % 7].src;
    }, 0);
    return false;
}