-1

ページのスクロール位置に応じて、8つの可能なフレームの1つを表示するアニメーションがあります。20ピクセルスクロールするたびに、フレーム8に到達するまで次のフレームが表示され、160ピクセル後にフレーム1に戻ります。現時点では、ページの長さが2000ピクセルの場合、ばかげているように見えるifステートメントが100個必要です。ループを使用した素晴らしい関数を使用して、それを数行にする方法が必要です。友人はそれが'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 に答える