0

经验丰富的程序员,

我写了一个简单的函数来为 div 设置动画:

<script>
function okenko(y1, y2, dy) 
{
vyska = document.getElementById("okenko");
y1=y1+dy;

if (y1<=y2) {
  vyska.style.bottom = y1+'px';
  alert(y1);
  setTimeout(okenko(y1, y2, dy),30);
  }
else {
  vyska.style.bottom = y2+'px'
  }
}
</script>

加上触发按钮和div:

<input type="button" onclick="okenko(-60,0,5);" value="Okénko">
<div id="okenko" style="position:fixed;bottom:0px;">

插入的 alert() 可以正常工作 - 但如果删除它,则会跳过动画。问题是什么?

谢谢!

4

1 回答 1

3

这一行:

setTimeout(okenko(y1, y2, dy),30);

...立即调用 okenko(y1, y2, dy),并将其返回值( undefined) 传递给setTimeout(最终什么都不做),与foo(bar()) 调用 bar并将其返回值传递给foo.

你可能的意思是:

setTimeout(function() {
    okenko(y1, y2, dy);
}, 30);
于 2013-08-07T09:06:00.717 回答