Javascript动画级别:初学者

Javascript动画级别:初学者,javascript,animation,html,Javascript,Animation,Html,我正在尝试学习Javascript动画,但正如我所想,它在xD中不起作用 更新删除粘贴错误 我试过了 function click_home() { for(i=0;i<=10;i++) { setTimeout(setOpacity("div_home",i),200); } }; function setOpacity(id,value) { document.getElementById(id).style.opacity = valu

我正在尝试学习Javascript动画,但正如我所想,它在xD中不起作用

更新删除粘贴错误

我试过了

function click_home()
{
    for(i=0;i<=10;i++)
    {
       setTimeout(setOpacity("div_home",i),200);
    }
};

function setOpacity(id,value) {
    document.getElementById(id).style.opacity = value/10;
    document.getElementById(id).style.filter = 'alpha(opacity=' + value*10 + ')';
};
函数单击\u home()
{

对于(i=0;i首先,在
for
循环中出现语法错误(将
更改为

您需要将函数传递给
setTimeout
,以便它可以定期执行。当前传递的
setTimeout
是执行
setOpacity(“div_home”,i)
(即
未定义的
)的结果

如注释中所述,您将发现所有的超时将在200毫秒后执行。要获得动画,您需要错开执行。最简单的方法是将
i
添加到延迟计算中;即
25*i

我不知道为什么要先在
setOpacity
函数中将
opacity
filter
设置为
0
;这些重置将立即设置为随后的值

在查找
document.getElementById(id).style
时,还应查看缓存
document.getElementById(id).style的结果(如果删除上述不必要的重置,则为2)


我在开头写了“大家好:D”,你需要告诉我们为什么它错了;什么是你不想做的,它现在表现出什么行为?我认为它应该是按钮而不是div_home_home@JamWaffles这就是问题所在:什么都没有发生。我编辑了代码中的错误和不正确之处。因为所有的更改都会在后面发生呃200毫秒,除了立即的不透明度跳变外,什么也不会发生。将200改为i*20Nope,这个对我不起作用……我以为这是因为在setOpacity(“div_home,i)”中忘记了“;”但没有。无论如何,非常感谢:)@戴夫:注意到了。更新了。@Bonny1992:这个答案会让你有很长的路要走。在底部写一条评论说“这不管用”无助于我,也无助于其他任何人让你走完剩下的路(不管剩下的问题是什么)。更具体一些。并将200改为i*20,但没有任何东西出现。
<td id="button_home" onclick="click_home();"> Home </td>
function click_home()
{
    for(i=0;i<=10;i++)
    {
       setTimeout(function () {
           setOpacity("div_home",i)
       }, 200);
    }
};
function click_home()
{
    function delay(i) {
        setTimeout(function () {
           setOpacity("div_home",i)
        }, 200);
    }

    for(i=0;i<=10;i++)
    {
       delay(i);
    }
};
function setOpacity(id,value) {
    var style = document.getElementById(id).style;

    style.opacity = value/10;
    style.filter = 'alpha(opacity=' + value*10 + ')';
};