Javascript:setTimeout间隔似乎被忽略了?

时间:2014-10-03 09:32:51

标签: javascript html

我已经编写了下面的函数,该函数应该每隔20ms运行一次,直到颜色渐变完成,但是淡入淡出会立即发生 - 为什么?

function saveColour()
    {
        if(x<=speedms/frameratems)
        {
            currentRed=Math.floor((x*deltaRed)+oldRGB[0]);
            currentGreen=Math.floor((x*deltaGreen)+oldRGB[1]);
            currentBlue=Math.floor((x*deltaBlue)+oldRGB[2]);
            document.getElementById(id).style.backgroundColor="rgb("+currentRed+", "+currentGreen+", "+currentBlue+")";
            //window.alert("rgb("+currentRed+", "+currentGreen+", "+currentBlue+")");
            x++;
            setTimeout(saveColour(),frameratems);
        }
    }

无论我将frameratem设置为什么,setTimeout似乎都会立即运行,我不知道为什么。

谢谢!

1 个答案:

答案 0 :(得分:4)

setTimeout期望函数引用作为第一个参数

通过setTimeout(saveColour(),frameratems);

调用它

您将saveColour

的返回值传递给它

如果saveColour返回了一个函数,那就没问题了。

使用

setTimeout(saveColour,frameratems);

代替