0

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

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

问题一:如何通过function;输入变量 例如fadetext(element, time)。我无法通过简单地用变量替换值来做到这一点。

问题2:通过javascript逐步实现更改是标准(也是正确的)方法吗?我的困惑点是我们fadetext()在自己的函数中使用函数。这不会造成过载吗?

4

2 回答 2

5

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

function fadeText(element, duration) {
    ...
    setTimeout(function() {
        fadeText(element, duration);
    }, 20);
}

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

于 2012-06-17T19:57:52.597 回答
1

fadetext()是的,您应该为函数外部设置计时器并将hex外部定义为全局变量,这样您就解决了这两个问题:) 并使用setInterval()避免每次调用 setTimeout,并调用函数而不是字符串。(正如一位用户指出的那样,我的代码存在可重用性问题)。

var hex = 255;
setInterval(fadetext,20);

function fadetext(){ 
   if(hex>0) {
   hex-=11;
   document.getElementById("sample").style.color="rgb("+hex+","+hex+","+hex+")";
   }
}

作为奖励,您可以研究jQuery,淡化(和其他动画任务)变得非常容易实现,通常在单个命令或命令行中。

于 2012-06-17T19:56:25.203 回答