Javascript功能逐步改变

Goo*_*bot 0 javascript javascript-events settimeout

我使用本教程创建了一个基本的javascript函数,用于在给定的时间段内实现更改.

function fadetext(){ 
if(hex>0) {
hex-=11;
document.getElementById("sample").style.color="rgb("+hex+","+hex+","+hex+")";
setTimeout("fadetext()",20); 
}
else
hex=255
}
Run Code Online (Sandbox Code Playgroud)

问题1:如何通过输入变量function; 例如fadetext(element, time).我无法通过简单地用变量替换值来实现.

问题2:通过javascript逐步实现更改是标准(和正确)方法吗?对我来说,困惑在于我们fadetext()在自己的函数中使用函数.这不是超载吗?

SLa*_*aks 5

您需要将函数而不是字符串传递给setTimeout:

function fadeText(element, duration) {
    ...
    setTimeout(function() {
        fadeText(element, duration);
    }, 20);
}
Run Code Online (Sandbox Code Playgroud)

此代码传递一个匿名函数,该函数捕获闭包中的原始参数.