我使用此tutorial创建了一个基本的javascript函数,用于在给定的时间段内实现更改。
function fadetext(){
if(hex>0) {
hex-=11;
document.getElementById("sample").style.color="rgb("+hex+","+hex+","+hex+")";
setTimeout("fadetext()",20);
}
else
hex=255
}
问题1:如何通过function
输入变量;例如fadetext(element, time)
。我无法通过简单地用变量替换值来实现这一目的。
问题2:是否是通过javascript逐步实施更改的标准(和正确)方法?对我来说,混淆点是我们在自己的函数中使用fadetext()
函数。这不会超载吗?
答案 0 :(得分:5)
您需要将函数而不是字符串传递给setTimeout
:
function fadeText(element, duration) {
...
setTimeout(function() {
fadeText(element, duration);
}, 20);
}
此代码传递一个匿名函数,该函数捕获闭包中的原始参数。
答案 1 :(得分: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 ,淡入淡出(以及其他动画任务)变得非常简单,通常在单个命令或命令行中。