0

私は水槽を設計しています。ページの背景全体が水です。5000ミリ秒後に水を青から茶色に変えて一時停止する機能を設定したい。次に、ユーザーはボタンをクリックして「タンクを掃除」し、バックグラウンド変更機能をリセットします。

私が見つけることができる唯一の解決策は、背景を青から緑に変え続けるループです。

var intPgColorIndex = 0;
var arrPgColor = new Array("#999966", "#00ffff" );
function SetPgColor()
{
var PgColor;
intPgColorIndex++;
if (intPgColorIndex >= arrPgColor.length)


{
intPgColorIndex = 0;
}
PgColor = arrPgColor[intPgColorIndex];
if (PgColor = "#999966" ) {
 document.body.style.backgroundColor = PgColor;
 setTimeout("SetPgColor()", 5000);
 }


  };
4

2 に答える 2

1

コードが期待どおりに実行されないようにする唯一の部分は、値を比較する=代わりに使用していることです。==

しかし、あなたのコードは醜くて悪いので、ここにもっと良いバージョンがあります:

setTimeout(function dirty() {
    document.body.style.backgroundColor = "#996";
    var btn = document.body.appendChild(document.createElement('button'));
    btn.appendChild(document.createTextNode("Clean the tank"));
    btn.onclick = function clean() {
        btn.parentNode.removeChild(btn);
        document.body.style.backgroundColor = "#0ff";
        setTimeout(dirty,5000);
    };
},5000);
于 2013-01-31T03:07:54.403 に答える
-1
function clean() {
  clearTimeout(dirt);
  var dirt = setTimeout(dirt, 5000)
  //set color to blue
}
function dirt() {
  //set color to brown
}

プログラムの開始時にcleanを呼び出し、ユーザーがボタンなどをクリックしたときに実行します。5秒(少し短いimo)待ってから、ダート機能を実行します。ユーザーがボタンをクリックするまで何も起こりません。その時点でタンクが洗浄され、再び5秒間待ってから再び汚れます。シンプル、クリーン、そして効果的。:D

于 2013-01-31T02:59:54.403 に答える