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



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

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

http://jsfiddle.net/jimmytheman/NnFmn/2/

function scroll() {
 if (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);
    }
else if (window.pageYOffset < 60){
    setTimeout("document.images['ball'].src=imageArray[2].src",0);
    }
else if (window.pageYOffset < 80){
    setTimeout("document.images['ball'].src=imageArray[3].src",0);
    }

你可以在javascript中使用模数它是%字符,http://jsfiddle.net/NnFmn/4/

但是你可以这样缩短代码:

function scroll() {
    setTimeout(function() {
        document.images['ball'].src = imageArray[window.pageYOffset % 7].src;
    }, 0);
    return false;
}
http://jsfiddle.net/NnFmn/5/

最新更新