3

10秒ごとにボディの背景画像を変える機能を作ることにしました。

function Background()
{
    var Background_Stage;
    switch(Background_Stage)
    {
        case 0:
        {
            $('body').css.('background', '#000 url(../../Styles/Callum_Project1/Images/BACKGROUND_1_TEST.png) no-repeat');
            Background_Stage++;
            setInterval(function(){Background()},10000);
        }
        case 1:
        {
            $('body').css.('background', '#000 url(../../Styles/Callum_Project1/Images/BACKGROUND_2_TEST.png) no-repeat');
            Background_Stage++;
            setInterval(function(){Background()},10000);
        }
        case 2:
        {
            $('body').css.('background', '#000 url(../../Styles/Callum_Project1/Images/BACKGROUND_2_TEST.png) no-repeat');
            Background_Stage = 0;//Reset 
            setInterval(function(){Background()},10000);
        }
    }
}

しかし、私はこのようなことをしました

<body onload="Background()"></body>

何もしていないようです。助けを求めるのはばかげているかもしれませんが、これは私が JavaScript を学んでいたときの最初のことでした。私はこれのほとんどに jQuery を使用したと言わなければなりません。

4

4 に答える 4

0
  • あなたBackgroud_Stageは初期化されていません
  • あなたのsetInterval配置は非常に深刻な問題を引き起こします
  • 無効な構文もあります。

全体として、コードは次のように単純化できます。

var Stage = 0;
setInterval(function() {
    var bg = '#000 url(../../Styles/Callum_Project1/Images/BACKGROUND_'+(Stage+1)+'_TEST.png) no-repeat';
    document.body.style.background = bg;
    Stage = ++Stage % 3;
}, 10000);
于 2013-09-10T15:39:09.183 に答える
0

background を呼び出すたびに、 の値で呼び出される新しいローカル変数をインスタンス化します。これはどのオプションとも一致しません。Background_Stageundefinedswitch

関数の外部で変数を宣言し (関数の呼び出し間で保持されるように)、開始値を与える必要があります。

于 2013-09-10T15:34:36.113 に答える