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 回答