-1

我有一个动画,根据页面上的滚动位置显示 8 个可能的帧之一。每次滚动 20 像素时,都会显示下一帧,直到到达第 8 帧,然后在 160 像素后返回到第一帧。目前,如果页面长 2000 像素,我需要 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);
    }
4

1 回答 1

2

您可以在 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/

于 2013-03-14T15:15:32.413 回答