【发布时间】:2012-01-29 06:01:53
【问题描述】:
我尝试使用 setTimeout() 函数做一个 JS 淡入淡出效果,它似乎在某种程度上可以工作,但我似乎无法弄清楚下面的代码有什么问题:
<html>
<head>
<title></title>
<script type="text/javascript">
function FadeEffect(n)
{
var i=1;
fade = document.getElementById("box");
if (n===1)
{
fade.style.opacity=i/10;
i++;
setTimeout("FadeEffect(1)",50);
if (fade.style.opacity=1)
{
var i=1;
}
}
else if (n===0)
{
fade.style.opacity=1-i/10;
i++;
setTimeout("FadeEffect(0)",50);
if (fade.style.opacity=0)
{
var i=1;
}
}
}
</script>
<style type="text/css">
#box{
width: 200px;
height: 50px;
border: 1px solid black;
background-color: #ccc;
opacity: 0;
}
</style>
</head>
<body>
<div onMouseOver="FadeEffect(1)" onMouseOut="FadeEffect(0)" id="box">Menu</div>
</body>
</html>
编辑:用 setTimeout() 函数更新了代码。
【问题讨论】:
-
你可以试试 jQuery。它非常好,您可以轻松地为元素添加淡入淡出效果。
-
感谢您的建议,但问题仍未得到解答。看,我是一个初学者,我真的很想弄清楚。
-
您在问题中说您使用“setTimeout()”,但在您发布的代码中没有调用“setTimeout()”。
-
抱歉,一定是复制粘贴了错误的代码块。现在更新了。
-
更新后的代码仍有一些问题。请参阅我的更新答案。顺便说一句,我和 Pointy 在我们的答案中使用
Math.min()和/或Math.max()的原因是 JavaScript 处理浮点数的方式(加 0.1 十次不等于 1.0)。
标签: javascript fade effect