Javascript 样式更改和设置超时问题

Javascript 样式更改和设置超时问题,javascript,css,settimeout,reload,Javascript,Css,Settimeout,Reload,我想通过更改style.left值并使用settimeout()控制更改间隔,在屏幕上缓慢移动元素 为了启动序列,我在body onload中使用了一个settimeout函数 然后在函数结束时对同一函数进行延迟调用,以继续该序列 问题似乎是style.left值的更改导致重新加载,从而导致重新加载计时器触发。当您打开页面时,即使超时延迟为5秒,元素也会在屏幕上闪烁到其最终位置 我知道更新的css动画技术,但它们不适合我的需要 以上段落是正确的假设吗?这里最大的问题是您使用的是SetTimeou

我想通过更改style.left值并使用settimeout()控制更改间隔,在屏幕上缓慢移动元素

为了启动序列,我在body onload中使用了一个settimeout函数

然后在函数结束时对同一函数进行延迟调用,以继续该序列

问题似乎是style.left值的更改导致重新加载,从而导致重新加载计时器触发。当您打开页面时,即使超时延迟为5秒,元素也会在屏幕上闪烁到其最终位置

我知道更新的css动画技术,但它们不适合我的需要


以上段落是正确的假设吗?

这里最大的问题是您使用的是SetTimeout而不是SetInterval。您可以使用SetInterval轻松完成此任务。我将包括一个JSFIDLE示例:


window.e=document.getElementById(“框”);
var i=0;
setInterval(函数(){
i=i+20;
window.e.style.left=i+“px”;;
},1000);

别忘了你在CSS中的位置应该是绝对的

你能发布你的JS吗?也许你应该试试
setInterval
而不是
setTimeout
。是的,设置超时不应该导致重新加载。还有其他一些代码把你搞砸了。请提供一个JSFIDLE。您的问题可能与“延迟召回”有关。您是否在没有查看初始动画是否有效的情况下尝试过它。如果是这样,那么正如@zgood已经说过的,setInterval可能是您正在寻找的。正如其他人所说,代码是我们的朋友。
<div id="box" style="width:30px;height:30px;background-color:red;position:absolute;"></div>

window.e = document.getElementById("box");
var i = 0;

setInterval(function () {
    i = i + 20;
    window.e.style.left = i + "px";;
},1000);