1

以下は、関数を定期的に実行するために使用する関数です。体の背景を変える機能を使っています。しかしなぜか解雇されない。このコードで私を助けてください。

setInterval(uiImageChanger(),1);

    function uiImageChanger(){
        var currentTime = new Date().getHours();
        var images = ['image1.jpg','image2.jpg'];

        if( currentTime > 00 && currentTime <= 12){
            $('body').css('background-image', "url(" + randomImagePicker(images ,'breakfast') + ")");
        }else if( currentTime > 12 && currentTime <= 16){
            $('body').css('background-image', "url(" + randomImagePicker(images ,'lunch') + ")");
        }else if( currentTime > 16 && currentTime <= 00){
            $('body').css('background-image', "url(" + randomImagePicker(images ,'dinner') + ")");
        }
    }

    function randomImagePicker(imgArray,time){
        if(time == 'breakfast'){
            return "../images/main_image/breakfast/" + imgArray[Math.floor(Math.random() * imgArray.length)];
        }else if(time == 'lunch'){
            return "../images/main_image/lunch/" + imgArray[Math.floor(Math.random() * imgArray.length)];
        }else if(time == 'dinner'){
            return "../images/main_image/dinner/" + imgArray[Math.floor(Math.random() * imgArray.length)];
        }
    }

ありがとうございました。

4

4 に答える 4

1

setInterval を使用して実行する関数を定義する方法は複数あります。方法の 1 つは、#mohkhan で例が示されている関数リファレンスを使用することです。ただし、次のこともできます

    setInterval(function(){
           // code comes here.
    }, time_in_mills);

また、関数実行の値が 1 であると言及されているようです。これは、1 ミリ秒ごとに関数が実行されることを意味し、これはまったく良い習慣ではありません。コードを実行するのに十分な時間を与えるために、現実的な時間をミリ秒単位で指定します。

于 2013-07-05T05:53:08.867 に答える
1

setInterval()この問題について、いくつかの回答が得られました。コード内の他のいくつかの問題を指摘したいと思います。

まず、このテストは常に失敗します。

else if( currentTime > 16 && currentTime <= 00)

結局のところ、数値が > 16 の場合、<= 0 になることはできません。

00また、非推奨の 8 進定数であるという警告が表示される場合があります。もちろん、8 進数のゼロは 10 進数のゼロと同じ値ですが、不注意による 8 進数の定数に注意してください: 先行ゼロの使用は避けてください。

そして、コードには多くの繰り返しがあります。この繰り返しをすべて簡単に削除して、コードをより保守しやすくすることができます。次のアプローチを検討してください。

// Return a random integer >= 0 and < n
function randomInt( n ) {
    return Math.floor( Math.random() * n );
}

// Return a random element from an array
function randomElement( array ) {
    return array[ randomInt(array.length) ];
}

function uiImageChanger(){
    var hour = new Date().getHours();
    var meal =
        hour <= 12 ? 'breakfast' :
        hour <= 16 ? 'lunch' :
        'dinner';
    var images = [ 'image1.jpg', 'image2.jpg' ];
    $('body').css(
        'background-image',
        'url(../images/main_image/' + meal +
            '/' + randomElement(images) + ')'
    );
}
于 2013-07-05T06:04:07.137 に答える